Cap*_*ffe 15 .net c# string constructor
制作背后的逻辑/原因是什么?
String s= new String("Hello World");
Run Code Online (Sandbox Code Playgroud)
C#中是非法的?错误是
`string.String(char*)'的最佳重载方法匹配有一些无效的参数
我对API文档不感兴趣,我对为什么这是非法感兴趣.
是因为汇集静态字符串?像Java池整数(-128)到整数(127)与可怕的结果?(当然还有字符串)
Bro*_*ass 11
使用构造函数基于另一个现有字符串创建一个新字符串是没有意义的 - 这就是没有允许这样的构造函数重载的原因.做就是了
string s = "Hello World";
Run Code Online (Sandbox Code Playgroud)
因为字符串是不可变的,并且在构造它们方面具有语言支持.
在您的示例中,由于您使用的是字符串文字,因此它将被实现.从它创建的任何复制的字符串最终都会与实际的内容池完全相同.
它是.NET,而不是C#.查看System.String的构造函数- none接受System.String
所以它是"非法的",原因与您无法使用int构造字符串相同.
string x = new String(1);
Run Code Online (Sandbox Code Playgroud)
答案为"为什么不存在此功能?" 通常是"默认情况下功能不存在.有人必须实现它们."
我的猜测是每次有人坐下来实现这个构造函数.他们考虑了String.ToString的实现,并确定构造函数在逻辑上会破坏该方法.