C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.29363 の関連記事表示

<< 0 >>
■29363  Re[14]: 行末のセミコロンの省略
□投稿者/ NyaRuRu -(2008/12/09(Tue) 01:17:11)
    No29361 (.SHO さん) に返信
    > ■No29271 (NyaRuRu さん) に返信
    > 
    >>   Func<string,string> f;
    >>   string s;
    >>
    >>   var a = f     // ここにセミコロンを挿入できてしまう
    >>   (s+"!").ToString();
    > 
    > これも、(s+"!").ToString(); は、コンパイルは通りますが
    > 意味をなさないので f にくっつけてしまっていいように思えます。
    
    うーむ,"意味"ですか.
    
    確かに,コードとして意味が無さそうな例をだしてしまったのは申し訳ないのですが,
    かといって,意味がありそうな例が構成できないというわけでもないように思います.
    
    戻り値を捨てている文を一律に「意味を成さない」というのは無理で,実際それは
    メソッドの中のアクションというか副作用次第です.
    世界のどこにも何の影響も残さないようなアクションなら,確かに意味を成しません.
    しかし,世界のどこかに影響を残すなら,それは「意味を成しうる」ものです.
    
    例えば StringBuilder クラスの多くのメソッドは,自分自身の内容を変更し,
    戻り値としては自分自身の参照を返すようになっています.
    
    var sb1 = new StringBuilder();
    var sb2 = new StringBuilder()
    
    (isFooBar() ? sb1 : sb2).AppendLine("Hello");
    
    Console.WriteLine(sb1.ToString());
    Console.WriteLine(sb2.ToString());
    
    例えばこの (isFooBar() ? sb1 : sb2).AppendLine("Hello"); は,
    丸括弧で始まって,戻り値を捨てているものの,アクションの効果を期待して
    単独で使われても不思議ではないような例です.
    こういうケースを自動で判別できないように思います.
記事No.29161 のレス /過去ログ53より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -