如果智能感知显示 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
以外的类型可能具有 Value
和 HasValue
属性,所以不,仅仅因为类型具有这些属性并不意味着它是 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
以外的类型可能具有 Value
和 HasValue
属性,所以不,仅仅因为类型具有这些属性并不意味着它是 Nullable
.