programming:cs:cs_tips

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
programming:cs:cs_tips [2015-02-16 10:30]
Decomo 作成
programming:cs:cs_tips [2017-12-13 11:37] (現在)
Decomo
行 1: 行 1:
 ====== C# Tips====== ====== C# Tips======
 +
 +===== メンバ名を文字列で取得したい =====
 +
 +''nameof''で取れる。''nameof''が使えなければ、Expressionとラムダ式を組み合わせると取れる。
 +
  
 ===== コマンドラインオプションを解析したい ===== ===== コマンドラインオプションを解析したい =====
行 62: 行 67:
   * [[https://social.msdn.microsoft.com/Forums/ja-jp/0f210f52-3667-4e66-9dd6-4480eede48de/c-excel-exe?forum=csharpgeneralja|C# Excel 操作 EXEが残り続ける]]   * [[https://social.msdn.microsoft.com/Forums/ja-jp/0f210f52-3667-4e66-9dd6-4480eede48de/c-excel-exe?forum=csharpgeneralja|C# Excel 操作 EXEが残り続ける]]
   * [[http://stackoverflow.com/questions/8490564/getting-excel-application-process-id|c# - Getting excel application process id - Stack Overflow]]   * [[http://stackoverflow.com/questions/8490564/getting-excel-application-process-id|c# - Getting excel application process id - Stack Overflow]]
 +
 +===== ファイルの上書きコピーでUnauthorizedAccessExceptionが出る =====
 +
 +パーミッション的には全く問題ない場所で、''System.IO.File.Copy''で新たにファイルをコピーしたあと、同じファイルに上書きコピーしようとすると''System.UnauthorizedAccessException''例外が発生する事がある。
 +そんな時は''Copy''で作成したファイルに対して''File.SetAttributes(file, FileAttributes.Normal)''してやる。
 +
 +===== enumを64ビットフラグとして使う =====
 +
 +C#の列挙型は何もしなければint型なので32bit以上の値は扱えないが、''long''ないし''ulong''でenumを作る(正しいC#用語は何と言うんだろう?)と64bitになる。更に<fc #ff0000>フラグの定義では「1L」を使う</fc>のがミソ。ただの「1」だと32bit値と見なされ、32ビット以上のシフトが回転してしまう。
 +
 +<code c#>
 +enum Flag64 : long
 +{
 +    Bit0  = 1 << 0,
 +    Bit1  = 1 << 1,
 +    Bit32 = 1 << 32,
 +    Bit33 = 1L << 33,
 +}
 +
 +Flag64 b0 = Flag64.b0;    // b0  == Flag64.Bit0,  (long)b0  == 1
 +Flag64 b1 = Flag64.b1;    // b1  == Flag64.Bit1,  (long)b1  == 2
 +Flag64 b32 = Flag64.b32;  // b32 == Flag64.Bit0,  (long)b32 == 1
 +Flag64 b33 = Flag64.b33;  // b33 == Flag64.Bit33, (long)b33 == 8589934592
 +</code>
  • programming/cs/cs_tips.1424050221.txt.gz
  • 最終更新: 2015-02-16 10:30
  • by Decomo