C# 如何检查字段是否不为空?

C# 如何检查字段是否不为空?,c#,C#,我在C#方面是个新手(我来自Java),我有以下疑问 在我正在处理的一个应用程序中,我在代码中发现了类似的内容: if (!String.IsNullOrEmpty(u.nome)) 此代码只是检查u对象的nome字段是否不是空\null字符串 好的,这对我来说很清楚,但是如果一个字段不是字符串而是一个普通整数,我该怎么做才能检查它呢?int?是一个可为空的整数。只需将其与null进行比较 if (u.NullableInt != null) if(myObj != null) {....}

我在C#方面是个新手(我来自Java),我有以下疑问

在我正在处理的一个应用程序中,我在代码中发现了类似的内容:

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的原因;-)