2019年02月04日
川俣晶の縁側ソフトウェア技術雑記total 2909 count

C#において式で定数を初期化したい

Written By: 川俣 晶連絡先

問題 §

 決まり切った数があって定数として定義したい。直接書くと長くなるので式で書きたいがエラーになってしまう。式で書いても通る場合がある。

        private const string confirmationStringC = new string(Enumerable.Range(0x20, 256 - 0x20).Cast<char>().ToArray());

原因 §

 コンパイラが解決できる式は定数の値として利用できるが、コンパイラが解決できない式は値として使用できない。つまり、1+2は使えるが上記のようなメソッド呼び出しを含む複雑な式はコンパイラが解決できない。明らかに何回実行しても、同じ値にしかならないが、コンパイラはそこまで見抜けない。

解決 §

 readonlyを使う。読み出し専用の変数ならどんな式でも初期化できる。読み出し専用の変数はコンパイル時ではなく初期化時に値が確定するものであり、コンパイラが値を確定できなくても使用できる。

        private static readonly string confirmationString = new string(Enumerable.Range(0x20, 256 - 0x20).Cast<char>().ToArray());

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2019年
02月
07日
Googleフォトの手振れ補正を試す
3days 0 count
total 2545 count
【技術雑記】の前のコンテンツ
2019年
01月
24日
.net standard 2.0のクラスライブラリ(or Blazor)でC#のdynamic型がコンパイルエラーになる
3days 0 count
total 3246 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20190204111704
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.