C#中的System.String类型

Tra*_*ent 6 c# clr

我知道这可能听起来像一个奇怪的问题,但这已经在我脑海中浮现了一段时间.

我知道C#中的System.String类型实际上是一个带有构造函数的类,该构造函数具有字符数组参数.例如,以下代码是合法的,不会导致错误:

System.String s = new System.String("Hello".toCharArray());
Run Code Online (Sandbox Code Playgroud)

我的问题是,System.String类可以通过这种方式接受一个字符数组:

System.String s = "Hello";
Run Code Online (Sandbox Code Playgroud)

DGi*_*bbs 8

你打电话的时候:

System.String s = new System.String("Hello".toCharArray());
Run Code Online (Sandbox Code Playgroud)

您正在显式调用构造函数

当你写:

string foo = "bar";
Run Code Online (Sandbox Code Playgroud)

IL指令(Ldstr)将新对象引用推送到该字符串文字.它与调用构造函数不同.