如果智能感知显示 HasValue 属性,是否意味着该类型可为空?

If intellisense shows a HasValue property, does it mean the type is nullable?

在我们的 ADO 框架代码库中,我找到了这个定义:

// 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;

result = tempDataRow.Reference_System_RTKField;

我没有收到任何编译错误。 我还查看了 SQL Server 中的 Table 列定义,对于该字段,它显示 "not null"

实际上 Nullable 以外的类型可能具有 ValueHasValue 属性,所以不,仅仅因为类型具有这些属性并不意味着它是 Nullable.

的一个实例