0

ほとんどの場合、それらは結果/効果を生成するために内部ロジックによって使用される読み取り専用の指示ですが、呼び出し元の関数 (初期化関数、ソートアルゴリズムなど) によって変更される場合があります。

関数がパラメーターを変更することをコードで示すためのベストプラクティスがあるかどうか疑問に思っていました(これを明示的に述べている上記のコメントを書くことは別として)? 広く認識されているコーディング規約のように。

C++ では、関数によって変更されないすべてのパラメーターに「const」キーワードを使用しますが、C# では const または「readonly」をそのように使用することはできません。また、「const」がないからといって、パラメーターが関数によって更新されることを意図しているとは限りません。

ありがとう

4

1 に答える 1

1

out実際、C#では、値付きタイプのパラメーター(および不変性のための文字列)は、またはrefキーワードで明示的にマークしない限り、デフォルトで「const」です。参照型に関しては、関数はパラメーターが参照するオブジェクトのみを変更でき、参照自体は変更できません。

さらに、これらoutrefキーワードは、コードのフローを分析し、「初期化されていない」変数の使用を禁止するコンパイラーのヒントです。それで。つまり、メソッドを宣言する場合:

void DoSomething(int i) { ... }

次に、次のコードから呼び出してみてください。

int x;
DoSomething(x);

x呼び出し時に初期化されないため、コンパイラは許可しません。一方で:

void DoSomething(out int i) { ... i = 10; ... }

次の呼び出しが許可されるようになりました。

int x;
DoSomething(out x);

コンパイラは、DoSomethingxを初期化することを認識しているためです。DoSomethingパラメータに値を割り当てるstatamentが含まれていない限り、コンパイルされないことに注意してiください。

于 2012-07-25T13:50:01.223 に答える