-4
class C
{
    int a;
    int c=10;
    void F(C c1)
    { 
        c1.a = 30;
        c1 = null;
    }

    public static void Main(string[]args)
    {
        C c1 = new C();
        c1.a = 10;
        c1.F(c1);          
        Console.WriteLine(c1.a);
        Console.WriteLine(c1);
    }
}
4

3 に答える 3

0

何が起こっているかを示すために、パラメーターの名前を「arrgghhh」に変更しました。両方に同じ名前を付けましたが、同じ変数にはなりません。どちらも同じオブジェクトを指していますが、arrrgghh を null にすると、c1 は null になりません。c1 は、arrrgghh がもはやオブジェクトを指していなくても、まだオブジェクトを指しています。

class C
{
    int a;
    int c=10;
    void F(C arrrgghhh)
    { 
        arrrgghhh.a = 30;
        arrrgghhh = null;
    }

    public static void Main(string[]args)
    {
        C c1 = new C();
        c1.a = 10;
        c1.F(c1);          
        Console.WriteLine(c1.a);
        Console.WriteLine(c1);
    }
}
于 2013-10-24T08:57:30.897 に答える