2010-02-04 87 views

回答

5

你可以用本機類型爲結構(簡單的例子,給你一個想法,未經檢驗的,很多改進的餘地):

public struct NullableDouble { 
    public bool hasValue = false; 
    private double _value; 

    public double Value { 
     get { 
      if (hasValue) 
       return _value; 
      else 
       throw new Exception(...); 
     } 
     set { 
      hasValue = true; 
      _value = value; 
     } 
    } 
} 

很顯然,你不會得到新的C#版本的語法糖,即你必須使用 myNullableDouble.hasValue而不是 myNullableDouble == null等。 (見Andreas的評論。)

+2

你可以使用比較 - 只要你重寫例如。或者實現正確的界面 – 2010-02-04 13:26:17

0

可爲空是泛型類型。如果沒有泛型,不可能實現這樣的可爲空並且沒有意義。

0

如果不將業務規則附加到數據類型中的現有值,那麼您無法進行此操作。例如。 int.MinValue可以用作佔位符,但是如果你需要這個值呢?如果你有一個所有值都是正數的規則,它可以工作,但不是「可空」。