我是 C#的新手(我来自Java),我有以下疑问。
在我正在工作的应用程序中,我在代码中找到了类似的内容:
if (!String.IsNullOrEmpty(u.nome))
此代码只检查u对象的nome字段是否为空\ null字符串。
好的,这对我来说非常清楚,但如果字段不是字符串但是普通的int,我该怎么做呢?
答案 0 :(得分:6)
int?
是一个可以为空的整数。只需将其与null
if (u.NullableInt != null)
或使用Nullable<T>.HasValue
属性(这是品味问题,但我发现此选项更具可读性)
if (u.NullableInt.HasValue)
注意:如果您询问的是int
,那么它是value type,并且不能有null
值。整数的默认值是0
(但你不能说它是否被赋值给变量,这就是为什么引入了可空类型)。
答案 1 :(得分:0)
您可以使用几种不同的类型,但最常见的是:
if(someVar != null)
如果您来自数据库,这将特别有用
if(someVar != DBNull.Value)
答案 2 :(得分:0)
int
是一个不可为空的值类型,因此无论如何它都不能为null。但对于可以为空的值类型(例如int?
,bool?
)和引用类型(任何类),您只需与null进行比较
if(myObj != null) {....}
答案 3 :(得分:0)
如果它是像int这样的值类型,即使你没有初始化它也会有一个init值。对于int,它是0。
对于参考类型我认为您可以检查
if(someVar !=null)
您可以看到此http://msdn.microsoft.com/en-us/library/4d43ts61(v=vs.90).aspx
答案 4 :(得分:0)
您可以使用此机制进行检查
static bool CheckIfNullOrDefault<T>(T value)
{
return object.Equals(value, default(T));
}
double d = 0;
CheckIfNullOrDefault(d); // true
MyClass c = null;
CheckIfNullOrDefault(c); // true
在上面的代码中,您发现T是引用类型。这里将它与null进行比较,如果它有一些值,则说布尔值为false,对于double,默认值(T)为0d,它会被验证。