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。有很多关于可空值类型的文档,它们可以很容易地声明为eg
Vector3?位置
为什么要将位置
设置为空?空值是不明确的,会增加复杂性。为什么不实现空对象模式并定义一个
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;