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 类是引用类型

这意味着这两个函数引用了保存实际数据的托管堆

没有任何东西被复制。

如果您知道指针,则它与传递指针基本相同。

于 2013-04-09T06:05:27.017 回答