3

私はこのコードでそのエラーを受け取りました:

const string body = HighPoint; // HighPoint is a string arg passed in to the method

...そして定数を削除することでそれを回避することができました:

string body = HighPoint; 

...または、もちろん、定数値を割り当てる:

const string body = "My Dinner with Andre";

...しかし、「私のやり方はあまりスポーツ的なやり方ではない」のでしょうか?(無償のプリンセスブライドリファレンス)

4

2 に答える 2

6

C#のキーワードconstは、コンパイル時定数を意味します。これは、同じキーワードが実行時の定数のみを必要とするC++およびCとは異なります。

于 2012-07-11T03:56:43.373 に答える
5

constconstC#の場合はC++の場合とは異なります。

C ++ではconst、実行時定数。次の操作はC++で有効です

すなわち

const char *CONST_INFO = "hello world";
CONST_INFO = "goodbye world"; //aok
const int i = SomeMethod(); //aok

一方、C#はより厳密です。定数値はコンパイル時に一定でなければなりません。メソッドは戻りません、または静的クラスメンバー。

1回限りの値を定数として使用する必要がある場合(つまり、配列またはメソッドの戻り値)、静的修飾子と読み取り専用修飾子を使用して、constキーワードが与える制限のほとんどをエミュレートできます。

public static readonly string body = HighPoint;

正常にコンパイルする必要がありますが、値を変更する場合と同様の制限が発生します。const

于 2012-07-11T03:58:30.577 に答える