簡體   English   中英

可空對象的類別

[英]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 = nullfoo1設置為foo1 = null

foo1仍然是實例化的對象,因此不會為null,因此Console.WriteLine("foo1 is not NULL"); 將被執行。

如果確實需要foo1 == null來返回真(如果x和y為null),則可以覆蓋==運算符和Equals()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM