C# 如何检查字段是否不为空?
我在C#方面是个新手(我来自Java),我有以下疑问 在我正在处理的一个应用程序中,我在代码中发现了类似的内容:C# 如何检查字段是否不为空?,c#,C#,我在C#方面是个新手(我来自Java),我有以下疑问 在我正在处理的一个应用程序中,我在代码中发现了类似的内容: if (!String.IsNullOrEmpty(u.nome)) 此代码只是检查u对象的nome字段是否不是空\null字符串 好的,这对我来说很清楚,但是如果一个字段不是字符串而是一个普通整数,我该怎么做才能检查它呢?int?是一个可为空的整数。只需将其与null进行比较 if (u.NullableInt != null) if(myObj != null) {....}
if (!String.IsNullOrEmpty(u.nome))
此代码只是检查u对象的nome字段是否不是空\null字符串
好的,这对我来说很清楚,但是如果一个字段不是字符串而是一个普通整数,我该怎么做才能检查它呢?
int?
是一个可为空的整数。只需将其与null进行比较
if (u.NullableInt != null)
if(myObj != null) {....}
或者使用属性(这是品味的问题,但我发现这个选项更具可读性)
注意:如果您询问的是
int
,那么它是a,并且不能有null
值。整数的默认值是0
(但您不能说它是否分配给变量,这就是引入可空类型的原因)。您可以使用几种不同的类型,但最常见的是:
if(someVar != null)
如果您来自DB,这将特别有用
if(someVar != DBNull.Value)
int
是一种不可为null的值类型,因此它无论如何不能为null。但是对于可为null的值类型(例如,int?
,bool?
)和引用类型(任何类),您可以简单地与null进行比较
if (u.NullableInt != null)
if(myObj != null) {....}
如果它是像int这样的值类型,那么即使您没有初始化它,它也会有一个init值。对于int,它是0 对于参考类型,我想你可以这样检查
if(someVar !=null)
您可以看到这个您可以使用此机制进行检查
static bool CheckIfNullOrDefault<T>(T value)
{
return object.Equals(value, default(T));
}
double d = 0;
CheckIfNullOrDefault(d); // true
MyClass c = null;
CheckIfNullOrDefault(c); // true
static bool CheckIfNullOrDefault(T值)
{
返回object.Equals(值,默认值(T));
}
双d=0;
CheckIfNullOrDefault(d);//真的
MyClass c=null;
CheckIfNullOrDefault(c);//真的
在上面的代码中,您发现T是引用类型。在这里,它与null比较,如果它有一些值,比如布尔值,那么它是false,因为双默认值(T)是0d,它会得到验证。这与Java中的情况类似。如果Heslacher所说的(yourObject!=null),除了
int
不能为null,简单到:)在任何情况下,string.IsNullOrEmpty
都是一种快捷方式,是一种显示检查字符串“空性”方法的意图。它实际上相当于编写u.nome==null | | u.nome==string.Empty
@Luaan,这就是我编写yourObject的原因;-)