blog


あくなき追求、深追いこそ永遠の目標

C#でエスケープシーケンスを無視する方法

.NET

以前、このblogの中のWindowsのフォルダ名に戸惑う.NETプログラミングではディレクトリパス名を変数にセットする場合には、以下のように実装すると書いてましたが、

String val = "C:¥¥¥"Documents and Settings¥"¥¥Administrator¥¥デスクトップ";

もっとスマートな方法がありました
それは@リテラル文字として使用する方法です

String val = @"C:¥Documents and Settings¥Administrator¥デスクトップ";

Documents and Settingsのダブルクォートも必要もなく、可読性が高まります
 
投稿日:2008/01/03 | カテゴリ:.NET | コメント:(0)

Windowsのフォルダ名に戸惑う.NETプログラミング

.NET

.NET環境でWindowsプログラムを開始して早1ヶ月たち、未だにWindows自身はあまり好きにはなれませんが、Visual Studioは便利なツールだと認識してきている今日この頃です。あるときWindowsのディレクトリパス名を変数にセットしてファイルを保存する処理をC#で下記のようにコーディングしていました。

String val = "C:¥¥Documents and Settings¥¥Administrator¥¥デスクトップ";

問題なくコンパイルは通るのですが実行すると、

"C:¥¥Documents "

と丁度空白の箇所で切れてしまい、Documents and Settingsをディレクトリと認識してくれませんでした。Windows固有のルールなのだから、それも含めてパースしてくれよーという思いで一杯でしたが、やっつけで下記のように実装して対応しました。

String val = "C:¥¥¥"Documents and Settings¥"¥¥Administrator¥¥デスクトップ";

¥"Documents and Settings¥" Documents and Settingsをダブルクォートし、なおかつダブルクォートの中にクォートなのでエスケープシーケンス(¥)をダブルクォートの前につけました。Windowsプログラムは初心者なので、このような方法しか思いつかなかったのですが、あまりカッコのよい書き方ではないなぁーと思ってしまいました。世の中のWindowsプログラマーの方々は、どのように実装しているのでしょうか。クリティカルな箇所ではないので、これで良いと言えば良いのでしょうが、何気に気になってしまう初心者です。
 
投稿日:2007/07/16 | カテゴリ:.NET | コメント:(0)