为什么string是引用类型,但行为与其他引用类型不同?

Tal*_*ner 4 c# string

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

string s="God is great!";
Run Code Online (Sandbox Code Playgroud)

但是在同一个音符上,如果我声明类说Employee是一个引用类型,为什么下面的代码不起作用呢?

Employee e = "Saurabh";
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 14

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

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

object x = "string literal";
Run Code Online (Sandbox Code Playgroud)

这很好,因为有一个从隐式引用转换stringobject.同样你可以写:

XNamespace ns = "some namespace";
Run Code Online (Sandbox Code Playgroud)

因为从字符串到隐式转换XNamespace.

要回答你的第二个问题:看是否在.NET中使用类型是值类型或引用类型... structenum类型是值类型; 其他一切(类,委托,接口,数组)是一个引用类型.这是排除指针类型,有点不同:)