这两者之间有什么区别,我应该使用哪一个?
string s = "Hello world!";
String s = "Hello world!";
这两者之间有什么区别,我应该使用哪一个?
string s = "Hello world!";
String s = "Hello world!";
当前回答
另一个没有提到的论点,最好是复活节案例:
System.String 是参考类型,参考类型名称是经典案例。
其他回答
您不需要进口名称空间(使用系统;)来使用字符串,因为它是一个全球的名称 System.String。
要了解更多关于 Alias 的信息,您可以查看此链接。
string 是 System.String 的 C# 中的一个 alias. 所以技术上,没有区别. 它就像 int vs. System.Int32.
至于指导方针,一般建议在您提到对象时使用字符串。
吉。
string place = "world";
同样,我认为一般建议使用 String 如果你需要具体提到课堂。
吉。
string greet = String.Format("Hello {0}!", place);
这是微软在其例子中使用的风格。
似乎该领域的指导方针可能已经改变了,因为StyleCop现在强制使用C#特定的联盟。
虽然 String 是一个保留的 C# 关键词,总是有一个固定的含义, String 只是一个常见的识别器,可以提到任何东西. 根据当前类型的成员,当前的名称空间和应用的使用指令和他们的位置, String 可能是一个值或类型与全球::System.String 不同。
我将提供两个例子,其中使用指令不会有助于。
class MySequence<TElement>
{
public IEnumerable<TElement> String { get; set; }
void Example()
{
var test = String.Format("Hello {0}.", DateTime.Today.DayOfWeek);
}
}
更糟糕的是: 說 String.Concat(someSequence) 將很可能(取決於使用) 去 Linq 擴展方法 Enumerable.Concat. 它不會去到静态方法 string.Concat。
其次,当 String 是另一种类型时,它在当前类型内定位:
class MyPiano
{
protected class String
{
}
void Example()
{
var test1 = String.Format("Hello {0}.", DateTime.Today.DayOfWeek);
String test2 = "Goodbye";
}
}
上述的一切基本上是正确的,一个人可以检查它。
public static void Main()
{
var s = "a string";
}
编辑并打开.exe 与 ildasm 查看
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 8 (0x8)
.maxstack 1
.locals init ([0] string s)
IL_0000: nop
IL_0001: ldstr "a string"
IL_0006: stloc.0
IL_0007: ret
} // end of method Program::Main
然后变成线条和线条,编译,打开与 ildasm 并看到 IL 不会改变. 它也显示语言的创作者在定义变量时更喜欢线条(spoiler:当呼叫会员时,他们更喜欢线条)。
两者之间没有区别,您可以在代码中使用其中一个。
System.String 是一个类(参考类型)定义的 mscorlib 在名空间系统. 换句话说, System.String 是 CLR 的类型。
string 是 C# 的关键词