2016-10-26 1 views
-1

私は来年の値である定数を作成したいと思います。目的は、switch-caseステートメントで定数を使用することです。来年の値の定数を作成する方法

private const string filterThisYear = "= " + Convert.ToString(DateTime.Now.Year); 
private const string filterNextYear = "= " + Convert.ToString(DateTime.Now.Year + 1); 

コンパイラは文句を言い、「一定の値が期待されている」「『filterThisYear』に割り当てられている式は定数でなければなりません」とswitch文で私が取得します。

どのような考えですか?

+2

本当にコンパイル時定数が必要ですか?値を変更したくない場合は、 'readonly'にすることができます:' private static readonly int ThisYear = DateTime.Now.Year' – Nico

答えて

3

「今年」と「来年」は、定義によって相対的な概念です。

定数は、コンパイル時に設定された値で、は変更されません。

「今年」とは、この執筆時点での2016年を意味します。誰かがこの「来年」を読むと、「今年」は2017になります。

これはよく知られている制限です。私はあなたがこれをやってみました推測しています:

switch (year) 
{ 
    case DateTime.Now.Year: 
     //Some code here 
} 

コンパイラはあなたが今知っているように、」勝った、質問、のように使用すると、1つを作成しようとすることを決めたので、それは、定数が必要であることを言っている必要があります上記の理由で働きます。

スイッチがどのようにコンパイルされ、実行され、質問の範囲をはるかに超えているかに関係します。言うまでもありませんが、それは不可能です。

代わりにifステートメントを使用してください。

+0

ありがとうございます。ステートメントの場合はそれです。 –

関連する問題