2012年4月4日水曜日

開発環境

  • Microsoft Windows 7 Home Premium (OS)
  • Microsoft Visual C# 2010 Express Edition (IDE)
  • 言語: C#

独習C# 第3版 ハーバート・シルト (著) エディフィストラーニング株式会社 矢嶋聡 (監修, 翻訳) の第6章(Cメソッドとクラスの詳細)の理解度チェック8を解いてみる。

8.

refとoutはともに参照渡しであることは同じだけど、refキーワードの場合は初期化の必要があって、outキーワードの場合は初期化の必要がない。そのかわり、outキーバードの場合はメソッドが終了する前胃に、出力パラメータに値を代入しなければならない。

参照渡しであること、outキーワードの場合は変数の初期化の必要がないことを確認。

コード

using System;

class Tester
{
    public void M1(ref int a, int b, int c)
    {
        a = b + c;
    }
    public void M2(out int a, int b, int c)
    {
        a = b * c;
    }
    public void M3(int a, int b, int c)
    {
        a = b + c;
    }
    public void M4(int a, int b, int c)
    {
        a = b * c;
    }
    public void Run()
    {
        int a1 = 10;
        int a2;
        int a3 = 0;
        int a4 = 0;
        int b = 10;
        int c = 20;
        M1(ref a1, b, c);
        M2(out a2, b, c);
        M3(a3, b, c);
        M4(a4, b, c);
        Console.WriteLine("{0},{1},{2},{3}",
            a1, a2, a3, a4);
    }
    static void Main()
    {
        Tester t = new Tester();
        t.Run();
    }
}

入出力結果(Console Window)

30,200,0,0
続行するには何かキーを押してください . . .

0 コメント:

コメントを投稿