C#.Net 不区分大小写的字符串
Posted
技术标签:
【中文标题】C#.Net 不区分大小写的字符串【英文标题】:C#.Net case-insensitive string 【发布时间】:2010-09-05 19:14:11 【问题描述】:为什么 C#.Net 允许字符串对象的声明不区分大小写?
String sHello = "Hello";
string sHello = "Hello";
字符串的小写和大写 S 都是可以接受的,这似乎是唯一允许这样做的对象。
谁能解释一下原因?
【问题讨论】:
更多信息请见this question。 首先,它不区分大小写。你不能写STRING
或strinG
或其他任何东西。其次,它不是唯一具有别名的类型:object
是Object
的别名; bool
是 Boolean
的别名; double
是 Double
的别名等等。顺便提一下,void
也是 Void
的别名,但是 C# 不允许你使用 Void
...
【参考方案1】:
string
是语言关键字,而 System.String
是它的别名类型。
两者都编译成完全相同的东西,类似地:
int
是System.Int32
long
是System.Int64
float
是System.Single
double
是System.Double
char
是System.Char
byte
是System.Byte
short
是System.Int16
ushort
是System.UInt16
uint
是System.UInt32
ulong
是System.UInt64
我认为在大多数情况下这是关于代码的易读性 - 所有基本系统值类型都有别名,我认为小写 string
可能只是为了保持一致性。
【讨论】:
【参考方案2】:除其他答案外,最好使用关键字(如果存在)。
例如您应该使用 string 而不是 System.String。
【讨论】:
【参考方案3】:“String”是类的名称。 “string”是映射这个类的关键字。
好像是一样的
Int32 => 整数 十进制 => 十进制 Int64 => 长...等等...
【讨论】:
【参考方案4】:“字符串”是 C# 关键字。它只是“System.String”的别名——.NET BCL 类之一。
【讨论】:
【参考方案5】:“string”只是 System-namespace 中“String”类的 C# 别名。
【讨论】:
【参考方案6】:string 是 System.String 的别名。它们是一样的。
不过,按照惯例,类型 (System.String) 的对象通常称为别名 - 例如
string myString = "Hello";
而类上的操作使用大写版本 例如
String.IsNullOrEmpty(myStringVariable);
【讨论】:
我不认为约定特别是使用大写版本进行操作。我当然没有看到写下来的。重要的是对公共名称使用 BCL 版本,例如ReadSingle 而不是 ReadFloat。 说谁?没听说过这个约定!【参考方案7】:我使用字符串而不是字符串, Int32 而不是 int, 这样我的语法突出显示将字符串作为类型而不是关键字。我想让关键字跳出来。
【讨论】:
以上是关于C#.Net 不区分大小写的字符串的主要内容,如果未能解决你的问题,请参考以下文章
在带有 LINQ to XML 的 VB.NET 中,where 子句在属性值和字符串之间设置不区分大小写的比较
C#/.NET第六期01C#基础_01:运行环境新建C#程序的流程严格区分大小写类库的含义