C# eclared为egVector3?位置为什么要将位置设置为空?空值是不明确的,会增加复杂性。为什么不实现空对象模式并定义一个Zero或缺失的实例?许多类型都有Empty静态字段(例如String.Empty),这些字段表示一个类型的单个空实例,使得对缺失
C# eclared为egVector3?位置为什么要将位置设置为空?空值是不明确的,会增加复杂性。为什么不实现空对象模式并定义一个Zero或缺失的实例?许多类型都有Empty静态字段(例如String.Empty),这些字段表示一个类型的单个空实例,使得对缺失,c#,C#,eclared为egVector3?位置为什么要将位置设置为空?空值是不明确的,会增加复杂性。为什么不实现空对象模式并定义一个Zero或缺失的实例?许多类型都有Empty静态字段(例如String.Empty),这些字段表示一个类型的单个空实例,使得对缺失值的操作和处理变得非常容易。什么错误或警告?也共享C代码可能您想要Vector3??Vector3是一个结构,您需要将其转换为系统。可为null的引用类型的默认值为null,因此您只需分配null。有很多关于可空值类型的文档,它们可以很容易地声
eclared为eg
Vector3?位置
为什么要将位置设置为空?空值是不明确的,会增加复杂性。为什么不实现空对象模式并定义一个Zero
或缺失的实例?许多类型都有Empty
静态字段(例如String.Empty),这些字段表示一个类型的单个空实例,使得对缺失值的操作和处理变得非常容易。什么错误或警告?也共享C代码可能您想要Vector3?
?Vector3是一个结构,您需要将其转换为系统。可为null的
引用类型的默认值为null,因此您只需分配null。有很多关于可空值类型的文档,它们可以很容易地声明为egVector3?位置
为什么要将位置
设置为空?空值是不明确的,会增加复杂性。为什么不实现空对象模式并定义一个Zero
或缺失的实例?许多类型都有Empty
静态字段(例如String.Empty),这些字段表示一个类型的单个Null实例,使对缺失值的操作和处理变得更加容易,因此我现在每次都必须使用HasValue和Value?@iLoveUnicorns您想用Null
做什么?您可以使用?
运算符提取实际值或指定默认值。您不需要一直使用.Value
您可以执行类似var copy=myVector??新矢量3(0,0,0)
所以我现在每次都必须使用HasValue和Value?@iLoveUnicorns你想用null
做什么?您可以使用?
运算符提取实际值或指定默认值。您不需要一直使用.Value
您可以执行类似var copy=myVector??新矢量3(0,0,0)
要分配null或新向量3()
Vector3?()
是一个语法错误,坦率地说,纠正它没有任何意义。谢谢。至于Vector3.Zero
,这是一个非常好的主意,也是一个常见的模式(空对象)。或Vector3.缺少。Null不明确-它可能意味着不可用、无效、丢失等。您可能希望分配Null或新矢量3()
Vector3?()
是一个语法错误,坦率地说,纠正它没有任何意义。谢谢。至于Vector3.Zero
,这是一个非常好的主意,也是一个常见的模式(空对象)。或Vector3.缺少。Null是不明确的-它可能意味着不可用、无效、丢失等。我认为检查位置更惯用。HasValue
我认为检查位置更惯用。HasValue
//In some function/object
Vector3 position = new Vector3();
//In some loop.
if(position != null){
consumePositionAsForce(position);
position = null;
}
Vector3? position = null;
Vector3? vector = null;
position = new Vector3();
if(position != null) //or position.HasValue if you want
{
//...
}
Vector? vector2d = null;
Vector3d? vector3d = null;
// get a structure from a method which can return null
Vector3d? vector3d = GetVector();
// check if it has a value
if (vector3d.HasValue)
{
// use Vector3d
int x = vector3d.Value.X;
}
Vector3? position = null;