2015-01-16 52 views
-1

在我們ADO框架的代碼庫,我覺得這樣的定義:如果intellisense顯示HasValue屬性,是否意味着該類型可爲空?

// Reference_System_RTK 
public Company.Framework.Data.DbTypes.DbString Reference_System_RTKField 
{ 
    get {return this.DbString("Reference_System_RTK");} 
    set {this.DbString("Reference_System_RTK", value);} 
} 

而在當我想讀它的值的代碼,我也看到在智能感知的建議.Value.HasValue。 所以我的問題是什麼時候intellisense顯示這些屬性是否意味着它一直是null able type?所以我應該總是爲了獲得它的價值而得到它的HasValue and .Value?我不能只引用字段名稱?

 PrimaryKeysCrossReferenceTable.PrimaryKeysCrossReferenceDataRow tempDataRow = tblPrimaryKeysCrossReference.Rows[0] as PrimaryKeysCrossReferenceTable.PrimaryKeysCrossReferenceDataRow; 
     if (tempDataRow != null && tempDataRow.Reference_System_RTKField.HasValue) 
      result = tempDataRow.Reference_System_RTKField.Value; 

VS

result = tempDataRow.Reference_System_RTKField; 

我沒有得到編譯錯誤的任何人。 我也看了看錶列定義在SQL Server和該領域它說"not null"

+4

它可能是空的,或者它可能是一個恰好具有「Value」和「HasValue」屬性的類型。你必須看看這個類型才能發現。 'DbString()'返回什麼類型? 「結果」是什麼類型? – Cameron

回答

1

它實際上可能比Nullable其他有ValueHasValue性質的類型,所以沒有,只是因爲一種具有這些屬性並不意味着它是Nullable的一個實例。

+0

我還查看了SQL Server中的表列定義,併爲該字段指出「不爲空」,那麼您認爲應該以哪種方式獲取此字段的值? – Bohn

+0

@布萊克你爲什麼不嘗試一些選擇,看看有什麼和不工作。 – Servy

+0

項目不處於我可以運行它並現在測試的狀態。 – Bohn

相關問題