将对象与字符串作为方法参数传递

时间:2013-04-09 05:53:00

标签: c#

使用以下代码,我理解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;
    }
}

1 个答案:

答案 0 :(得分:0)

string和ANY类是引用类型

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

没有任何内容被复制。

如果你知道指针它与传递指针基本相同。