微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果字符串是C#中的引用类型,为什么传递字符串参数会表现为值类型?

如何解决如果字符串是C#中的引用类型,为什么传递字符串参数会表现为值类型?

我对以下内容感到困惑。如果string是C#中的引用类型,并作为引用类型传递,为什么不更改方法内部的参数值会导致原始参数中的值发生改变?

确定方法中参考“ z”指向的值已更改为“迈克”吗?

    public static void ChangeStudentName(string param)
    {
        param = "Mike";
    }

    string z = "Bill";
    ChangeStudentName(z);
    Console.WriteLine(z);


Output - Bill

解决方法

您想要ChangeStudentName(ref string param)。请参阅说明ref (C# Reference)。从文章:

不要将按引用传递的概念与引用类型的概念混淆。这两个概念并不相同。可以通过ref修改方法参数,而不管它是值类型还是引用类型。通过引用传递时,没有值类型的装箱。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。