2008年10月24日

昔書いた備忘録(2)

  
パス名の指定 文字列リテラルの指定
パス名文字列リテラルをあらわすには、2つの方法がある。

string path = "C:\\Windows\\System32\\Notepad.exe";
string path = @"C:\Windows\System32\Notepad.exe";

@を先頭に置くと、\記号をエスケープ記号ではなく、\そのものと解釈するので、読みやすくなる。
@リテラル文字列を使用すると、パス名などの表記がすっきり!。

文字列の連結
文字列の連結は、+ 演算子で可能だが、リテラルでない文字列を連結する場合には、System.Text.StringBuilder型を利用したほうが良い。+ 演算子をリテラルでない文字列に適用すると、多くの文字列オブジェクトがガベージコレクションの対象となるため、速度的に不利になる。

イベント
イベント情報を保持する型は、System.EventArgs型から派生するのが慣例になっている。
型の名前は、EventArgsで終わるようにする。

イベントハンドラの名前は、EventHandlerで終わるのが慣例になっている。また、戻り値は、void で、引数は2つとる。最初の引数は、Object 型で、通知を送信したオブジェクト、第2引数は、EventArgs から派生した型で、土の受信者が必要とする追加情報とする。

※ 引数の慣習は、Delphi と考え方は同じですね。

インデクサ
Object を引数として指定し、連想配列の値を検索するインデクサを作成することは、かなり一般的に行われている。System.Collections.Hashtable 型には、キー(Object)をとって、そのキーに関連づけされた値(Object型)を返すインデクサが定義されている。
また、インデクサのオーバーロードも可能。

可変個の引数
メソッドの最後の引数だけに、params キーワードをつけることができる。
このパラメータは、型は何でもかまわないが、1次元配列である必要がある。
任意の型を受け取れるようにするには、Object[] をとるようにする。

追記
2008/10/25 渋木さんの指摘により文字列リテラルの表現を訂正。


この記事へのコメント
@ リテラル文字列には \ 以外にも素のリテラル文字列と解釈の仕方が変わる文字がいくつかあるので、「パス名を表す方法」と決めつけるのはいかがなものかと思います。

「パス名の表記の仕方が2通りある」のではなく、「@ リテラル文字列を使用すると、パス名などの表記がすっきり?する」とかのがいいんじゃないでしょうか。

Posted by 渋木宏明(ひどり) at 2008年10月24日 23:10
渋木さん

> 「パス名の表記の仕方が2通りある」のではなく、「@ リテラル文字列を使用すると、パス名などの表記がすっきり?する」とかのがいいんじゃないでしょうか。

確かに、正規表現とかもありますからね。
昔書いた個人的備忘録ということで、そこはお手柔らかにお願いします(笑)。


Posted by gushwell at 2008年10月25日 11:12
対応ありがとうございます m(_ _)m

修正しても十分にわかりやすいところがウデですねw
Posted by 渋木宏明(ひどり) at 2008年10月25日 11:46
> 修正しても十分にわかりやすいところがウデですねw

いやー、渋木さんの言葉をそのまま使っただけですから。

Posted by gushwell at 2008年10月25日 13:49
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51665696