“string”和“String”的区别是什么?

3
这两种声明有什么区别?
string str;
String str;

1
可能是String vs string in C#的重复问题。 - Stephen Cleary
6个回答

22

在普通用途中,stringString是相同的; string只是global::System.String的别名。 然而,确实存在一些特殊情况:

  • 您需要使用using System;才能使用String - 对于string则不需要
  • 如果您定义了一个本地class String {},那么String将引用该类(当然这是件傻事)。 您不能定义一个名为string的类(尽管@string是可以的)

3

它们没有区别。string (小写) 只是 System.String 的别名。


是的,但 string 总是 System.String 的别名,而 String 只是遵循正常的类型查找规则。例如,如果您在当前作用域中有另一个名为 String 的类,则 String 将引用该类,而不是 System.String - Jörg W Mittag

2

string是C#中的一个关键字,它对应的是System.String .NET类型。

由微软提供的C#编译器将string关键字映射到System.String .NET类型,因此它们是等效的。


2

实际上,在C#中,类型关键字实际上是类型的同义词。因此,int = System.Int32,short = System.Int16和string = System.String。


1

String是System.String对象的别名,因此没有区别。

System.String是Common Type System类型,必须与其他.NET语言进行交互。 "string"只是C#中对该名称的快捷方式(就像int是System.Int32的快捷方式一样)


-1

它们是相同的,没有区别,string只是System.String类型的别名,在C#中还有其他类似的情况,比如int和System.Int32,long和System.Int64(请参见另一个相关的问题

有趣的是,虽然您可以在代码中使用别名代替完全限定的类型,但当您使用Convert类时仍需要知道基础类型,因为没有ToInt或ToLong方法,只有ToInt32和ToInt64。


1
跟你想的不一样,Convert是一个框架类,而不是编程语言的关键词。如果这个类中方法的命名沿用了C#关键词,那么在VB、F#或其他.NET语言中,这些方法会没有意义。 - Dan Puzey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接