gpt4 book ai didi

c# - 为什么字符串是引用类型,但行为却与其他引用类型不同?

转载 作者:太空狗 更新时间:2023-10-29 23:55:24 24 4
gpt4 key购买 nike

我们知道字符串是引用类型,所以我们有

string s="God is great!";

但同理,如果我声明类 Employee 是一个引用类型,那么为什么下面的代码不起作用?

Employee e = "Saurabh";

2- 我们如何确定一个类型是引用类型还是值类型?

最佳答案

如果您有从字符串到 Employee 的隐式转换,那么该代码将有效。基本上,字符串文字的类型是 string - 即它的值是一个字符串引用(并且是一个 interned 引用)。如果两种类型之间存在转换(用户定义的或内置的),则只能将一种类型的值分配给另一种类型的变量。在这种情况下,没有从 stringEmployee,因此出现错误。

与其他一些答案相反,类型不必相同 - 例如,这很好:

object x = "string literal";

这很好,因为存在从 stringobject 的隐式引用转换。同样你可以这样写:

XNamespace ns = "some namespace";

因为有一个 implicit conversion from string to XNamespace .

要回答您的第二个问题:查看 .NET 中的类型是值类型还是引用类型... structenum 类型是值类型;其他一切(类、委托(delegate)、接口(interface)、数组)都是引用类型。这不包括有点不同的指针类型:)

关于c# - 为什么字符串是引用类型,但行为却与其他引用类型不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com