[解決済み】C#でオブジェクトがNULLかどうかをチェックする
質問
オブジェクトがNULLの場合、それ以上の処理を行わないようにしたい。
次のコードでは、オブジェクトがNULLかどうかをどちらかによってチェックしています。
if (!data.Equals(null))
そして
if (data != null)
しかし、私は
NullReferenceException
で
dataList.Add(data)
. オブジェクトが NULL だった場合、そのオブジェクトは
if
-ステートメントを使用します。
このように、オブジェクトがヌルであるかどうかをチェックする方法が適切かどうかを尋ねているのです。
public List<Object> dataList;
public bool AddData(ref Object data)
bool success = false;
try
{
// I've also used "if (data != null)" which hasn't worked either
if (!data.Equals(null))
{
//NullReferenceException occurs here ...
dataList.Add(data);
success = doOtherStuff(data);
}
}
catch (Exception e)
{
throw new Exception(e.ToString());
}
return success;
}
もしこれがオブジェクトがヌルであるかどうかをチェックする適切な方法であるなら、私は何を間違えているのでしょうか(NullReferenceExceptionを回避するために、オブジェクトに対してそれ以上の処理を行わないようにするにはどうすればよいでしょうか)。
どのように解決するのですか?
それは
data
というのは
null
しかし
dataList
.
で作成する必要があります。
public List<Object> dataList = new List<Object>();
さらに良いのは、フィールドなので
private
. そして、何も問題がなければ、それを
readonly
. いい練習になりますよ。
脇
ヌルヌルチェックの正しい方法は
if(data != null)
. このようなチェックは参照型ではよくあることです。
Nullable<T>
は、より便利な表現方法として、等号演算子を上書きしています。
nullable.HasValue
を使用する。
もし、あなたが
if(!data.Equals(null))
を実行すると
NullReferenceException
もし
data == null
. この例外を回避することがそもそもの目的だったので、ちょっと滑稽です。
こんなこともしているんですね。
catch (Exception e)
{
throw new Exception(e.ToString());
}
これは絶対にダメです。メソッドの中にいながらデバッガに侵入できるように、この段落を置いたのだろうと想像できますが、その場合はこの段落を無視してください。そうでなければ、無駄に例外をキャッチしないようにしましょう。そうでなければ、無駄に例外をキャッチしないでください。
throw;
.
関連
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] 型チェック:typeof、GetType、is?
-
[解決済み] instanceofを呼び出す前にnullチェックは必要ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] カラムの変更:NULLをNOT NULLに変更する
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
-
[解決済み] JavaScriptのNullとundefinedのチェックと==と===の違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み] 関数を終了するには?
-
[解決済み] C#で例外を再スローする適切な方法は何ですか?[重複しています]。