0

次のコードでは、 getStringAgain(classOne.str1) が getAstring(classOne) よりも優れていることを理解しています。これは、データの隠蔽/カプセル化などのために必要なものだけを渡したいためです。

ただし、メモリの利点はありますか?明らかに、classOne オブジェクトは単なる文字列よりも大きくなりますが、どちらのメソッドでも、オブジェクトへの参照のみを渡しているため、参照のみがスタックにコピーされるため、どちらもメモリの点で効率的ですか?

Class ClassOne()
{
    public string str1 = "string1";
    public string str2 = "string2";
}

Class ClassTwo()
{
    public ClassTwo()
    {
        ClassOne classOne = new ClassOne();
        string a = getAstring(classOne);
        string b = getStringAgain(classOne.str1)
    }

    private string getAstring(ClassOne classOne)
    {
        return classOne.str1;
    }

    private string getStringAgain(string str)
    {
        return str;
    }
}
4

1 に答える 1

0

string および ANY クラスは参照型です

これは、2 つの関数が、実際のデータが保持されているマネージド ヒープへの参照を取得することを意味します。

何もコピーされません。

ポインターを知っている場合は、基本的にポインターを渡すのと同じです。

于 2013-04-09T06:05:27.017 に答える