ぽざうねっと

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  396  : 記事  0  : コメント  1030  : トラックバック  66

ニュース

さて、今年の秋は何を漬けようか

書庫

日記カテゴリ

Accessory

Community

Private

文字列が空文字かどうかを判別する場合、どうします?
// ①
if (string.Empty.Equals(text)) {
    /* なんか処理 */
}

// ②
if (text == string.Empty) {
    /* なんか処理 */
}

// ③
if (text.Length == 0) {
    /* なんか処理 */
}
私は、ビジネスロジックのような場合は②を使い、ライブラリや共通関数の場合は③を使います。
前者は可読性を、後者はパフォーマンスを重視してます。

昔は、早いから~とかいって全部③だった時期もありましたが、直感的というのも大事だよなーと宗旨替えしました。
パフォーマンスといっても時間的にはかなり微々たる物ですが、相対的に見ると倍ぐらい早かったりするのであなどれない。
投稿日時 : 2007年7月18日 13:31

コメント

# re: 文字列が空文字かどうかを判別する 2007/07/18 13:46 えムナウ
私は最近は strings.IsNullOrEmpty です。

# re: 文字列が空文字かどうかを判別する 2007/07/18 13:49 中ひろとし
text == ""

text.trim() == ""

わかりやすさを重視

# re: 文字列が空文字かどうかを判別する 2007/07/18 13:52 Ћ(←片桐)
えむなうさんと一緒で、isnullとかisemptyとかのis系関数使ってますー

# re: 文字列が空文字かどうかを判別する 2007/07/18 14:19 とっちゃん
.NET なら string.IsNullOrEmpty()
MFC/ATL なら CString::IsEmpty()
です。
STLのstringクラスはいろいろ面倒で使ってねーですw
あ、TCHAR* の場合は p == NULL || *p == _T('\0') っすなw
#p がNULLにはなりえない場合でも上記の書き方w


# re: 文字列が空文字かどうかを判別する 2007/07/18 14:39 オノデラ
> string.IsNullOrEmpty()

おぎわらさんが以前こんなこと書いていましたよ。

http://blogs.wankuma.com/ogiogi/archive/2006/12/12/50253.aspx

# re: 文字列が空文字かどうかを判別する 2007/07/18 14:41 ないしょ
text == ""
が多いです。VBからの移行組みが多数を占めるので^^;
新しい案件は、strings.IsNullOrEmpty で縛ってます

■おまけ
この書き方ができるVBが嫌い^^;
いまだに以下の書き方で上がってくる時がある。標準化資料見れorz

【VB】
test = ""
If test = Nothing Then
Console.Write "空文字"
Else
Console.Write "空文字ではない"
End If
(結果)空文字

【C#】
test="";
if (test==null)
{
Console.Write("空文字");
}
else
{
Console.Write("空文字でない");
}
(結果) 空文字でない

# re: 文字列が空文字かどうかを判別する 2007/07/18 14:53 さらに内緒orz
stringsクラスなんて作ってないっす。sがおおっかったす。
すまなかったssu
#だから、sが多いんだって>私 m(_ _(m

# re: 文字列が空文字かどうかを判別する 2007/07/18 15:13 シャノン
空文字かどうか判別するのであれば3ですね。
nullもありうるなら、(仕事が.NET 1.1なので)IsNullOrEmpty相当のメソッドを自作しています。

# re: 文字列が空文字かどうかを判別する 2007/07/18 15:48 えムナウ
>おぎわらさんが以前こんなこと書いていましたよ。
単純なコンソールアプリケーション
単純なループ
リリースバージョン

の3つの条件がある場合にJIT optimisationsでおかしくなるようですね。

コンソールアプリケーションでstringをパラメータで渡すときはIsNullOrEmpty を使わないか ref で渡すしかないようですね。

# re: 文字列が空文字かどうかを判別する 2007/07/18 15:50 えムナウ
コンソールアプリケーション の リリースバージョン って最近使ったことがない気がする。

re: なめるなぁキャラメルゥ

# re: 文字列が空文字かどうかを判別する 2007/07/18 18:00 ddnp
とっちゃんさんと逆に、STLよく使うddnpです。
そんな私は bool std::basic_string<>::empty()ですね。
# length() == 0 は有り得ません。

>あ、TCHAR* の場合は p == NULL || *p == _T('\0') っすなw
ですな :-p


# re: 文字列が空文字かどうかを判別する 2007/07/23 1:29 THREE-ONE
IsNullOrEmpty は個人的にあまり使う頻度少ないのと、今の仕事が1.1なのですっかり抜けておりました。
まあ、今回は「空文字」と比較したいということで null である場合も true っていうのはできれば考慮外にしたいです。
コード上で見ると "" って string.Empty よりわかりやすいですか?
私は圧倒的に string.Empty の方がみやすいのですが・・・

Post Feedback

タイトル
名前
Url:
コメント: