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)。我似乎记得有一段插曲,我们的英雄们正试图构建一个智能手机应用程序,并且不得不将谢尔顿踢出开发工作(主要是因为他是这样一个微观管理者/象牙塔类型的人,但仍然如此)。