-1

TrimNull()が冗長であるかどうか、および代替を使用する必要があるかどうかを教えてください。

例えば:

string username = UsernameTextBox.Text.TrimNull();

定義や拡張方法はないと言われています。おそらく私が見逃している参照がありますか?

更新

値がNULLの場合readableに返す最も簡単な方法は何ですか?empty string

4

5 に答える 5

5

そのような機能TrimNull(String)はありません - それは何もしません。文字列は null であるか、null でないかのいずれかであり、両方を混在させることはできません。文字列が null の場合、静的関数TrimNull(myString)は文字列から何も「削除」できません。NULLnull でなければ、削除する必要はありません。さらに悪いことに、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 に入れるのに苦労するので、入力の処理でそのシナリオについて心配する必要はありません。

于 2012-04-11T13:36:30.123 に答える
2

私は通常、次のように String.IsNullOrWhiteSpace() を使用します。

string username = (String.IsNullOrWhiteSpace(UsernameTextBox.Text) ? 
    null : UsernameTextBox.Text.Trim());

そうすれば、.Textプロパティが null の場合、例外は発生しません。

于 2012-04-11T13:36:21.293 に答える
1

null 合体演算子の否定の@sixlettervariables の回答に記載されているように、 null 合体演算子を使用します。

string username = (UsernameTextBox.Text ?? String.Empty).Trim();
于 2013-02-21T12:56:36.893 に答える
1

必要に応じて、独自の拡張メソッドを作成できます。

public static class StringExtensions
{
    public static string TrimNull(this string value)
    {
        return string.IsNullOrWhiteSpace(value) ? value : value.Trim();
    }
}

これをプロジェクトに追加すると、コードが機能します。

これは単なる代替手段です。

于 2012-04-11T13:47:44.243 に答える
0

NULL である文字列はその値ではありません。その状態です。これは、メモリが割り当てられていないことを意味します (参照型であるため)。それが値型のデータ型であった場合、int の 0 などのようにデフォルト値が自動的に割り当てられます。

あなたは使うべきです

if(!String.IsNullOrEmpty(UsernameTextBox.Text))
    string username = UsernameTextBox.Text.Trim();
于 2012-04-11T13:36:25.613 に答える