C# 对字符串使用struct或class的优缺点

C# 对字符串使用struct或class的优缺点,c#,.net,C#,.net,可能重复: 我有两个场景,结构和类都是可以接受的,我想知道什么是最佳实践 情景1: public static String foo(){...}//String is a class public static string foo(){...}//string is a struct 情景2: public foo(String bar){...}//String is a class public foo(string bar){...}//string is a struct

可能重复:

我有两个场景,结构和类都是可以接受的,我想知道什么是最佳实践

情景1:

public static String foo(){...}//String is a class

public static string foo(){...}//string is a struct
情景2:

public foo(String bar){...}//String is a class

public foo(string bar){...}//string is a struct

每个实现的优缺点是什么?

实现是相同的
String
是一个类,
String
只是一个别名

有关详细信息,请参见以下答案:
字符串只是字符串类型的别名,代码MSIL是相同的

字符串
字符串
是相同的东西。它们都是引用类型,这意味着它们是类(little's'
string
是真实类
string
的别名)


我个人更喜欢在代码中使用类名而不是别名。我想我更喜欢声明特定类型的变量,然后使用这些类型的静态方法(如
String.Format
)之间的一致性。

String和String是相同的,如Int32和int。

String
不是一个结构。它是类
系统的别名。String
String
是类
系统的C#别名。String
。它不是一个结构。事实上,编译器有一个显著的区别(不是很重要,但仍然很重要)。如果您使用大写的
字符串
,编译器必须使用
语句在
上下文中解析它,以查看您的意思是
System.String
,还是
AdvancedPhysics.String
RememberToBuyButter.tiaroundFinger.String
。另一方面,小写的
string
是一个关键字,只能引用
System.string
。谢谢@Cicada-我想我打字太快了。这对我来说很有意义静态方法和什么有什么关系?你可以为
string.Format
而不是
string.Format
。phoog的评论在技术上是不正确的,但除非OP使用的是理论物理库,否则string不太可能是System.string以外的任何东西,所以在最有可能的情况下它是正确的。@KeithS nor,是不是有人可能编写了一个有价值的理论物理库,却在发布之前的某个时候没有注意到命名任何.NET类
字符串的缺点。谁知道呢,那些字符串理论家是一群怪人(或者CBS告诉我:P)。我似乎记得有一段插曲,我们的英雄们正试图构建一个智能手机应用程序,并且不得不将谢尔顿踢出开发工作(主要是因为他是这样一个微观管理者/象牙塔类型的人,但仍然如此)。