ホームページ >バックエンド開発 >C#.Net チュートリアル >c#ref キーワードのサンプル コード共有

c#ref キーワードのサンプル コード共有

黄舟
黄舟オリジナル
2017-03-20 13:28:061352ブラウズ

C# 言語リファレンス

ref (C# リファレンス)

ref キーワードを使用すると、パラメーターが参照によって渡されます。その結果、メソッド内のパラメータに加えられた変更は、制御が呼び出し元のメソッドに戻されるときに変数に反映されます。 ref パラメーターを使用するには、メソッド定義とメソッド呼び出しの両方で明示的に ref キーワードを使用する必要があります。例:

コードをコピー

class RefExample
{
    static void Method(ref int i)
    {
        i = 44;
    }
    static void Main()
    {
        int val = 0;
        Method(ref val);
        // val is now 44
    }
}

ref パラメータに渡されるパラメータは、最初に初期化する必要があります。これは、パラメータを渡す前に明示的に初期化する必要がない out とは異なります。 (参照してください。)

ref と out は実行時には別々に処理されますが、コンパイル時には同じように処理されます。したがって、1 つのメソッドが ref パラメーターを受け取り、別のメソッドが out パラメーターを受け取る場合、両方のメソッドをオーバーロードすることはできません。たとえば、コンパイルの観点から見ると、次のコードの 2 つのメソッドは同一であるため、次のコードはコンパイルされません:

コードをコピー

class CS0663_Example 
{
    // compiler error CS0663: "cannot define overloaded 
    // methods that differ only on ref and out"
    public void SampleMethod(ref int i) {  }
    public void SampleMethod(out int i) {  }
}

ただし、一方のメソッドが ref または out パラメーターを受け取り、もう一方のメソッドがメソッドはこれら 2 種類のパラメータを取りません。以下に示すようにオーバーロードできます。

コードをコピー

class RefOutOverloadExample
{
    public void SampleMethod(int i) {  }
    public void SampleMethod(ref int i) {  }
}

備考

この属性は変数ではないため、ref パラメータとして渡すことはできません。

配列の受け渡しについては、

ref と out を使用した配列の受け渡しを参照してください。


値の型を参照によって渡すこと (上記を参照) は便利ですが、 ref は参照型を渡すのにも役立ちます。これにより、参照自体は参照によって渡されるため、呼び出されたメソッドは参照によって参照されるオブジェクトを変更できます。次の例は、参照型が ref パラメーターとして渡されると、オブジェクト自体を変更できることを示しています。

りー

以上がc#ref キーワードのサンプル コード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。