このページの2つのバージョン間の差分を表示します。
|
次のリビジョン
|
前のリビジョン
|
programming:cs:cs_tips [2015-02-16 10:30] Decomo 作成 |
programming:cs:cs_tips [2017-12-13 11:37] (現在) Decomo |
| ====== C# Tips====== | ====== C# Tips====== |
| | |
| | ===== メンバ名を文字列で取得したい ===== |
| | |
| | ''nameof''で取れる。''nameof''が使えなければ、Expressionとラムダ式を組み合わせると取れる。 |
| | |
| |
| ===== コマンドラインオプションを解析したい ===== | ===== コマンドラインオプションを解析したい ===== |
| * [[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> |