C# 可选参数必须出现在所有必需参数之后

C# 可选参数必须出现在所有必需参数之后,c#,unity3d,C#,Unity3d,我在更新项目并运行unity3d的Api更新程序时遇到此错误: 可选参数必须出现在所有必需参数之后 知道这个代码有什么问题吗 public static Transform AddChild(this Transform tfm, string name = "", [Optional] Vector3 offset) 如果希望最后一个参数是可选的,那么也给它一个默认值 public static Transform AddChild(this Transform tfm, stri

我在更新项目并运行unity3d的Api更新程序时遇到此错误:

可选参数必须出现在所有必需参数之后

知道这个代码有什么问题吗

public static Transform AddChild(this Transform tfm, string name = "", 
    [Optional] Vector3 offset)

如果希望最后一个参数是可选的,那么也给它一个默认值

public static Transform AddChild(this Transform tfm, string name = "", Vector3 offset = default)

有关更多信息,请参阅。

如果希望最后一个参数为可选参数,请同时为其提供默认值

public static Transform AddChild(this Transform tfm, string name = "", Vector3 offset = default)

有关详细信息,请参阅。

您似乎希望将偏移量
作为可选参数。要做到这一点,您需要确定如果有人在方法调用中没有提供默认值,那么适当的默认值是多少。如果您有将无偏移视为特例的逻辑,我建议将其设为可空

public static Transform AddChild(this Transform tfm, string name = "", Vector3? offset = null)
如果不提供偏移量意味着偏移量为零(将此变换与其父变换放在同一位置),则将其设置为
default

public static Transform AddChild(this Transform tfm, string name = "", Vector3 offset = default)

看起来您希望
offset
成为可选参数。要做到这一点,您需要确定如果有人在方法调用中没有提供默认值,那么适当的默认值是多少。如果您有将无偏移视为特例的逻辑,我建议将其设为可空

public static Transform AddChild(this Transform tfm, string name = "", Vector3? offset = null)
如果不提供偏移量意味着偏移量为零(将此变换与其父变换放在同一位置),则将其设置为
default

public static Transform AddChild(this Transform tfm, string name = "", Vector3 offset = default)

出现了什么错误?错误是指
string name=”“
是可选参数。看看。你是从哪里想到在C#?:facepalm中使用[可选]的:*我知道你现在做了什么。错误文本是问题的标题。“此错误”指的是标题。我认为这对于堆栈溢出来说有点不寻常。最好将错误文本发布到问题正文中。这有点让人困惑。类似的问题:@JonathonChase是用于。出现了什么错误?错误是指
string name=”“
是可选参数。看看。你是从哪里想到在C#?:facepalm中使用[可选]的:*我知道你现在做了什么。错误文本是问题的标题。“此错误”指的是标题。我认为这对于堆栈溢出来说有点不寻常。最好将错误文本发布到问题正文中。这有点让人困惑。类似的问题:@JonathonChase用于。在
Vector3
Vector3?
之间存在差异。问号是C#可以为空的缩写。。那就别管了;)
Vector3
Vector3?
之间存在差异。问号是C#可以为空的缩写。。那就别管了;)文档列表
Vector3.zero
是一个静态属性,而不是常量。如果这是正确的,那么我认为C#不会让您将其用作可选默认值
default(Vector3)
或只是简写的
default
应该是相同的意思。是的,它必须是
default
new Vector3()
文档列表
Vector3.zero
作为静态属性,而不是常量。如果这是正确的,那么我认为C#不会让您将其用作可选默认值
default(Vector3)
或只是简写的
default
应该是相同的意思。是的,它必须是
default
new Vector3()