Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#.NET 3.5中检查对象是否为null或空?_C#_Asp.net_.net 3.5 - Fatal编程技术网

如何在C#.NET 3.5中检查对象是否为null或空?

如何在C#.NET 3.5中检查对象是否为null或空?,c#,asp.net,.net-3.5,C#,Asp.net,.net 3.5,如果对象包含null或empty,那么如何验证或检查相同的条件 如何布尔检查对象obj是否为null或Empty 我的代码如下: class Program { static void Main(string[] args) { object obj = null; double d = Convert.ToDouble(string.IsNullOrEmpty(obj.ToString()) ? 0.0 : obj); Cons

如果对象包含null或empty,那么如何验证或检查相同的条件

如何布尔检查对象obj是否为
null
Empty

我的代码如下:

class Program
{
    static void Main(string[] args)
    {
        object obj = null;

        double d = Convert.ToDouble(string.IsNullOrEmpty(obj.ToString()) ? 0.0 : obj);
        Console.WriteLine(d.ToString());
    }
}
通过这段代码,我得到了
NullReference异常
,因为
对象引用未设置为对象的实例。

请帮忙

在这里我没有得到

如何在不转换为.ToString()的情况下验证该对象是
null
还是
Empty


是否有一种方法来检查相同的情况???

您得到的是空引用,因为您正在执行将返回obj的ToString()方法返回值的
obj.ToString()
。问题是,在前一行中,您将obj设置为null,这样您将得到一个对象引用,而不是。。。错误

要使代码正常工作,您需要执行以下操作:

//This will check if it's a null and then it will return 0.0 otherwise it will return your obj.
double d = Convert.ToDouble(obj ?? 0.0); 
但是,您现在的代码将始终为0.0

无空合并:(??)

编辑

如果我从注释中正确理解,您希望知道对象是null还是空字符串。您可以首先将其强制转换为字符串,而不是调用执行完全不同操作的方法:

string objString = (obj as string);
double d = Convert.ToDouble(string.IsNullOrEmpty(objString) ? "0.0" : objString);      

如果使用此代码得到
NullReferenceException
,您不应该感到惊讶。令人不快的是

obj.ToString()
如果你写

object obj = null;
string s = obj.ToString();

您可能会遇到
NullReferenceException
。由于对
ToString
的调用发生在调用
string.IsNullOrEmpty
之前,因此在检查null或空字符串之前会引发异常。

您可以使用
操作符。它被称为操作员。

听起来您要做的是:

object obj = null;
double d;

if (!double.TryParse(Convert.ToString(obj), out d))
{
   d = 0.0;
}

但是这个问题没有多大意义。

您遇到的问题是,您的对象属于object类型。为了使用string.IsNullOrEmpty对其求值,您应该将对象与强制转换一起传递到(string)

像这样:

static void Main(string[] args)
{
    object obj = null;

    double d = Convert.ToDouble(string.IsNullOrEmpty((string)obj) ? 0.0 : obj);
    Console.WriteLine(d.ToString());
}

这将很好,因为您没有显式地调用(不存在的)对象上的.ToString。

下面的代码可能是实现它的更安全的方法

if(obj != null && !string.IsNullOrEmpty(obj.ToString()))
{

}


这段代码将我们从非字符串类型的对象中解救出来。

您无法将空对象转换为字符串,因此会出现错误。只检查(obj!=null)有什么错?为什么要对一个已知为
null
的对象调用
ToString()
,从而生成
NullReferenceException
?没有空对象(尽管有空字符串)。我想这可能只是一个示例代码来说明问题……关于您的编辑,您认为空对象代表什么?好的……如何验证该对象是
null
还是
empty
,而不转换为
。ToString()
?与您所做的相同,只是您不调用ToStringmethod@TBohnen.jnr没有对弦的投射;调用ToString不是强制转换。是的,这很了不起,就像c:-)但是这种方法不能处理空字符串。如果
obj
是由一个比简单地将其设置为
null
更复杂的进程生成的,那么如果该进程生成的是一个不是字符串的真实对象,强制转换就会失败。正确,这是假设本例中的对象要么为null,要么可以转换为字符串。从技术上讲,这是假设对象可以转换为字符串,而不仅仅是转换。当obj实际上是一个int时,我失败了,int.ToString()可以工作,但(string)int失败了。太糟糕了;我试图避免使用额外的ToString()。这是我第一次听说
null coaliescing
操作符,了解更多关于该操作符的新事物让我感到兴奋。你能详细说明一下这个操作符的重要性和优点吗?我的错..更新了..干杯,伙计!顺便说一句,OP没有转换成.ToString()
就询问了
class Program
{
    static void Main(string[] args)
    {
        object obj = DBNull.Value;
        if(obj != DBNull.Value) {
            double d = Convert.ToDouble(obj);
            Console.WriteLine(d.ToString());
        }
    }
}
if(obj != null && !string.IsNullOrEmpty(obj.ToString()))
{

}