[英]Class of Nullable objects
这个问题更是一个好奇心,而不是其他任何东西。
假设有一个类似的课程:
public class Foo{
public int? x {get; set;}
public int? y {get; set;}
}
在项目的某个地方创建了实例:
var foo1= new Foo
{
x= 1;
y= 1;
};
var foo2= new Foo
{
x= 1;
y= 1;
};
如果出于某种原因,他们想检查彼此是否相等,然后将它们设置为NULL
并打印到屏幕上...
例如:
if(foo1.x == foo2.x)
foo1.x = null;
if(foo1.y == foo2.y)
foo1.y = null;
if(foo1 == null){
Console.WriteLine("foo1 is NULL");
}else{
Console.WriteLine("foo1 is not NULL");
}
哪个会打印?
foo1的实例存在,但其所有对象均设置为NULL
。 我是可空类型概念的新手,所以这引起了我的好奇! (我的Visual Studio处于混乱状态,否则我会进行自我测试)
我有两只手。 如果我的两只手是空的,那意味着我不存在吗?
变量的空状态不依赖于它所指向的实例的任何属性。
如您所说,foo本身仍然是一个实例化的对象,无论其成员数据的值如何,因此else语句都会输出。
您将拥有else被推导的foo1 is not NULL
,对象本身不为null,但属性为null。
您可以通过foo1 = null
将foo1
设置为foo1 = null
foo1
仍然是实例化的对象,因此不会为null,因此Console.WriteLine("foo1 is not NULL");
将被执行。
如果确实需要foo1 == null
来返回真(如果x和y为null),则可以覆盖==
运算符和Equals()
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.