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

C# 将对象与字符串作为方法参数传递,c#,C#,通过下面的代码,我理解getStringReach(classOne.str1)比getAstring(classOne)更好,因为我们只想传递数据隐藏/封装等所需的内容 然而,是否有任何内存优势?显然,classOne对象不仅仅是一个字符串,但是因为在这两种方法中,我们只传递一个对象的引用,因此只有引用被复制到堆栈中,它们在内存方面是否同样有效 Class ClassOne() { public string str1 = "string1"; public string st

通过下面的代码,我理解getStringReach(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;
    }
}

字符串和任何类都是引用类型

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

没有复制任何内容


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

效率是每单位成本完成的工作量的比率。在这种情况下,你所说的“高效”是什么意思?你在做什么工作,你在衡量什么成本?