「C#」カテゴリーアーカイブ

WebException発生時のステータスコードの取り方

C#でHttpWebRequest,HttpWebResponseあたり使ってHTTP通信したときWebサーバが 500 Internal Server Error など返してくるとWebExceptionが発生しますが、このときのステータスコード(500)を取りたいときは以下のようにします。

try {

} catch (WebException e) {
statusCode = (int)((HttpWebResponse)e.Response).StatusCode;
}

ちなみにWebサーバー落ちてるときも同様にWebException発生しますがe.Response==nullなのでnullチェックは入れておいた方がいいと思います。

C#でJavaの@deprecatedみたいなことをする(Obsolete属性)

Javaでメソッドやクラスなどに@Deprecatedというアノテーションを付けると非推奨にできます。

開発環境によりますが例えばeclipseでは非推奨メソッドを使っているところでは取り消し線が引かれるので視覚的にわかりやすくて重宝します。

C#でこれと同じようなことをするにはObsolete属性を使います。

Obsolete属性を付けるとコンパイル後使用箇所に波線が表示されます。引数なしだと単なる警告として処理されます。引数に文字列を記述すると、エラー一覧ウィンドウの説明に引数の文字列が表示されます。

デフォルトは警告扱いですがエラーとして扱いたいときは第2引数にtrueを指定します。

言うまでもありませんが、警告はビルドできますがエラーはビルドに失敗します。ケース・バイ・ケースで使い分けるといいでしょう。

コンボボックスの値を列挙体(Enum)にする簡単な方法

.NET Framework (C#)でコンボボックスの値に列挙体(Enum)のメンバーを指定する簡単な方法です。

// 値の設定
comboBox1.DataSource = Enum.GetValues(typeof(ComboBoxStyle));
// 値の取得
ComboBoxStyle style = (ComboBoxStyle)comboBox1.SelectedValue;

これはComboBoxStyle列挙体メンバーSimple,DropDown,DropDownListをコンボボックスの値として使用する例です。普通のアプリケーションでは列挙体のメンバー名をそのまま画面表示に使うことはないと思いますが、例えばデバッグとかテスト用アプリケーションで条件としてEnum値を指定できるようにしたいなんてときに使えると思います。