ユーザ用ツール

サイト用ツール

wiki:unity:tips:114

114 NULLチェックの回避方法

「NullReferenceException」をできるだけ回避する手段を列挙。

nullになりうる変数は事前に初期化しておく

Action fugaAction = delegate{};
string hogeText = string.Empty;
List<int> hogelist = new List<int>();
Dictionary<int, int> fooDictionary = new Dictionary<int, int>();

宣言と同時に初期化しておけばインスタンスが無いなんてことは無くなるためおすすめ。

文字列がnullか空かを判断する

通常string型変数の中身がnullか空かを判断するには以下の様に書きます。

if ( str == null || str == "" )

ですが、これではコードが汚くなり保守性が下がるため拡張メソッドを作成します。

string型用拡張メソッド
public static class StringExtensions
{
    /// <summary>
    /// nullまたは空かを確認します。
    /// </summary>
    static public bool IsNullOrEmpty( this string self )
    {
        return string.IsNullOrEmpty(self);
    }
}
使用例
if ( str.IsNullOrEmpty() )

スッキリします。

ActionやFuncといったデリゲートの場合

if(action != null)
{
    action();
}

毎回nullチェックを入れるのは面倒なので、同様に拡張メソッドを作成。

Action型用拡張メソッド
using System;
 
public static class ActionExtensions
{
    /// <summary>
    /// Action呼び出し。
    /// </summary>
    static public void Call( this Action self )
    {
        if(self != null)
        {
            self();
        }
    }
}
使用例
action.Call();

nullチェックが不要になります。

Permalink wiki/unity/tips/114.txt · 最終更新: 2016/09/12 13:19 by step

oeffentlich