引用类型对象通过ref传递,并且正常对象的行为不同

时间:2014-08-01 12:46:35

标签: c# .net object ref

请在下面找到代码:

 static void Main(string[] args)
    {
            StringBuilder sb = new StringBuilder();
            sb.Append("test");

            RefTest(ref sb);
            Console.WriteLine(sb.ToString());
            ObjTest(sb);
            Console.WriteLine(sb.ToString());
    }

    static void RefTest(ref StringBuilder sb)
    {
        sb = new StringBuilder();
        sb.Append("newreftest");
    }

    static void ObjTest(StringBuilder sb)
    {
        sb = new StringBuilder();
        sb.Append("newobjtest");
    }

    Output: newreftest
            newreftest

即使是StringBuilder也是引用类型,只有当我们将对象作为ref传递时,实例化的新对象才会被反射。 请解释其背后的原因。                                                                                         标记为重复的问题是要求使用引用类型的ref关键字,这与我的问题不同。我认为引用类型对象以及引用对象的ref参数将指针传递给对象本身。那么为什么创建的新实例和方法中提供的值会以不同的方式反映出来?

0 个答案:

没有答案