TrimNull()が冗長であるかどうか、および代替を使用する必要があるかどうかを教えてください。
例えば:
string username = UsernameTextBox.Text.TrimNull();
定義や拡張方法はないと言われています。おそらく私が見逃している参照がありますか?
更新:
値がNULLの場合readable
に返す最も簡単な方法は何ですか?empty string
TrimNull()が冗長であるかどうか、および代替を使用する必要があるかどうかを教えてください。
例えば:
string username = UsernameTextBox.Text.TrimNull();
定義や拡張方法はないと言われています。おそらく私が見逃している参照がありますか?
更新:
値がNULLの場合readable
に返す最も簡単な方法は何ですか?empty string
そのような機能TrimNull(String)
はありません - それは何もしません。文字列は null であるか、null でないかのいずれかであり、両方を混在させることはできません。文字列が null の場合、静的関数TrimNull(myString)
は文字列から何も「削除」できません。NULL
null でなければ、削除する必要はありません。さらに悪いことに、TrimNull がインスタンス メソッドである場合、myString がnull 参照でメソッドを呼び出すことができないためmyString.TrimNull()
、単純に例外が発生します。NULL
文字列を囲む空白文字を削除することが目的の場合は、単にmyString.Trim()
.
文字列が null かどうかを検出することが目的の場合は、myString == NULL
文字列が空か null かを検出することが目的の場合は、String.IsNullOrEmpty(myString)
\0
目的がデータ ストリームから末尾のヌル文字 ( ) を削除することである場合は、次のことを試してください。
myString.TrimEnd(new char[] { '\0' } )
しかし、Frédéric Hamidi が言ったように、後者について言及している場合、ユーザーは null 文字を TextBox に入れるのに苦労するので、入力の処理でそのシナリオについて心配する必要はありません。
私は通常、次のように String.IsNullOrWhiteSpace() を使用します。
string username = (String.IsNullOrWhiteSpace(UsernameTextBox.Text) ?
null : UsernameTextBox.Text.Trim());
そうすれば、.Text
プロパティが null の場合、例外は発生しません。
null 合体演算子の否定の@sixlettervariables の回答に記載されているように、 null 合体演算子を使用します。
string username = (UsernameTextBox.Text ?? String.Empty).Trim();
必要に応じて、独自の拡張メソッドを作成できます。
public static class StringExtensions
{
public static string TrimNull(this string value)
{
return string.IsNullOrWhiteSpace(value) ? value : value.Trim();
}
}
これをプロジェクトに追加すると、コードが機能します。
これは単なる代替手段です。
NULL である文字列はその値ではありません。その状態です。これは、メモリが割り当てられていないことを意味します (参照型であるため)。それが値型のデータ型であった場合、int の 0 などのようにデフォルト値が自動的に割り当てられます。
あなたは使うべきです
if(!String.IsNullOrEmpty(UsernameTextBox.Text))
string username = UsernameTextBox.Text.Trim();