【发布时间】:2015-08-21 17:24:45
【问题描述】:
创建一个不区分大小写的字符串类型需要什么?
我从未听说过有人制作这样不区分大小写的字符串类型,而且它显然不是框架的一部分,但它似乎非常有用。 SQL 默认进行不区分大小写的比较这一事实就是一个很好的例子。所以我认为这要么是不可能的,要么是有一个真的很好的理由说明为什么没有人这样做我不知道。
我知道它需要使用隐式运算符进行赋值,并且您必须覆盖等于运算符。而对于覆盖 GetHashCode(),我想你可以只返回 ToLower().GetHashCode()。
我错过了什么?
【问题讨论】:
-
你应该看看这个字符串比较。 msdn.microsoft.com/en-us/library/e6883c06(v=vs.110).aspx
-
@deathismyfriend 过去我只需要在这里或那里的某个地方执行此操作,但现在我正在开发一个数据上传工具,我确实需要它在任何地方都不区分大小写。如果可能的话,拥有一种实际以这种方式工作而不是使用实用方法的类型会更棒。但我同意这是目前我所知道的最好的处理方式。
-
@EZI 但是,难道没有一千个永远“不需要”解决的 XY 问题,而是因为它使代码更清晰,整个编程体验更好。
-
在您提出实际问题之前,您不知道没有更清洁的解决方案。 SQL 是一个怎样的例子? SQL just a 有不同的默认值。 SQL 对于不区分大小写的 char 没有单独的数据类型。为什么不尝试那些你知道它需要的东西。
标签: c# .net string class case-insensitive