オブジェクトにnullまたは空が含まれている場合、その条件を検証またはチェックする方法は?
オブジェクト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 Exception
なので Object reference not set to an instance of an object.
Plsは助けます。
ここでは得られません...
。ToString()に変換せずに、そのオブジェクトがnull
またはEmpty
であるかどうかを検証する方法??
同じことをチェックするアプローチはありますか?
あなたが遭遇している問題は、あなたのオブジェクトがタイプ、まあ、オブジェクトであるということです。 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を明示的に呼び出さないため、これは正常に機能します。
ObjのToString()メソッドの戻り値を返すobj.ToString()
を実行しているため、null参照を取得しています。問題は、前の行で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の合体なし:(??)
double d = Convert.ToDouble(obj ? 0.0 : obj);
[〜#〜]編集[〜#〜]
コメントから正しく理解できれば、オブジェクトがnullか空の文字列かを知りたいと思います。これを行うには、まったく異なる処理を行う ToString メソッドを呼び出す代わりに、最初に文字列にキャストします。
string objString = (obj as string);
double d = Convert.ToDouble(string.IsNullOrEmpty(objString) ? "0.0" : objString);
class Program
{
static void Main(string[] args)
{
object obj = DBNull.Value;
if(obj != DBNull.Value) {
double d = Convert.ToDouble(obj);
Console.WriteLine(d.ToString());
}
}
}
??
演算子。 null-coalescing 演算子として知られています。
あなたがやりたいことはこれです:
object obj = null;
double d;
if (!double.TryParse(Convert.ToString(obj), out d))
{
d = 0.0;
}
しかし、その質問はあまり意味がありません。
以下のコードは、それを達成するためのより安全な方法である可能性があります。
if(obj != null && !string.IsNullOrEmpty(obj.ToString()))
{
}
このコードは、文字列型ではないオブジェクトから私たちを救います。
このコードでNullReferenceException
を取得しても、少し驚いてはいけません。問題の部分は
obj.ToString()
あなたが書いた場合
object obj = null;
string s = obj.ToString();
あなたはNullReferenceException
を期待するでしょう。 ToString
の呼び出しはstring.IsNullOrEmpty
の呼び出しの前に発生するため、nullまたは空の文字列のチェックが行われる前に例外がスローされます。