のconstの文字列を作るために私を示唆:ReSharperの代わりに、常に1が良いの文字列
string sQuery = "SELECT * FROM table";
または
const string sQuery = "SELECT * FROM table";
をなぜReSharperのは、常にこれを行うために私を示唆?
のconstの文字列を作るために私を示唆:ReSharperの代わりに、常に1が良いの文字列
string sQuery = "SELECT * FROM table";
または
const string sQuery = "SELECT * FROM table";
をなぜReSharperのは、常にこれを行うために私を示唆?
後者が優れている - それは意味:あなたはあなたが勝った
"const"は他のアセンブリやバージョン管理からのアクセスに関していくつかの効果がありますが、それは問題ではありません。あなたはされていると、それのほとんど考えることができます:私は、それがインスタンスによって変化しない場合は(、なぜそれがインスタンス変数でなければなりませんができたときに、静的フィールドを作成することをお勧めします。一般に
static readonly string sQuery = ...;
を信じます?)と読み取り専用の場合(変更可能なデータは推論するのが難しい)。 static readonly
とconst
の違いの詳細に私が入りたいのであれば教えてください。
ReSharperは、特定の文字列リファレンスが変更されない場合にのみこれを示唆しています。その場合は、string
の代わりにconst string
を使用して、あなたの意図を表現します。
これは、コード内でsQueryに新しい値を誤って割り当てた場合、constの場合はコンパイルエラーが発生するため、コンパイル時にバグが発生するためです。 ctorでのみ読み込み専用に設定されているメンバ変数を作成する提案と同じ
文字列が変更されず、アセンブリの外部で使用されない場合、constは良い考えです。変更されない場合はがであることがアセンブリの外部で使用されている場合、静的な読み取り専用が良い考えです。constは、呼び出し場所で「焼き付け」され、1つの場所に格納されないため、constを含むアセンブリを再コンパイルします。依存するアセンブリを更新しない - 再コンパイルする必要があります。一方、静的な読み取り専用変数は、依存するアセンブリで更新されます。
"アセンブリの外に静的な読み取り専用が良いアイデアかもしれません" なぜですか?
"static sQuery"または "static readonly sQuery"を変更したい場合でも、何も変更されません。 ? 。 –
uzay95
Readonlyでは、再割り当てを行わず、静的変数は変数(constとは異なります)です。したがって、定義されているアセンブリ内の文字列を変更すると、更新は依存アセンブリに反映されます。これは、依存するアセンブリを再コンパイルしない限り、constを変更したときには発生しません。 – Rytmis
フィールドの代わりにローカル変数の場合、これは適用されません。 :) – Rytmis
これらの違いを説明してください。 (ありがとうございました) – uzay95
そして関数でconst/readonlyとは何と思いますか? – uzay95
http://stackoverflow.com/questions/410723/is-there-a-difference-between-private-const-and-private-readonly-variables-in-c若干の光を当てる可能性があります –