Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用自定义规则比较两个字符串_C#_String - Fatal编程技术网

C#使用自定义规则比较两个字符串

C#使用自定义规则比较两个字符串,c#,string,C#,String,有没有一种方法可以使用string.Equals或string.Compare,让两个null或两个空字符串分别返回false或0以外的数字 用例: string.Equals(null, null) = false; string.Equals("", string.empty) = false; string.Compare(null, null) != 0; string.Compare("", string.empty) != 0; 您可以尝试执行“不在之前”之类的操作: !stri

有没有一种方法可以使用string.Equals或string.Compare,让两个null或两个空字符串分别返回false或0以外的数字

用例:

string.Equals(null, null) = false;
string.Equals("", string.empty) = false;

string.Compare(null, null) != 0;
string.Compare("", string.empty) != 0;

您可以尝试执行“不在之前”之类的操作:

!string.Equals(null, null)

你能解释一下你为什么要做这样的事吗?例如,任何不等于自身的比较操作都不符合排序中使用的要求。@EricLippert我想这样做,因为空值和空值都表示“未知”值。我只是想知道是否有比(!String.IsEmptyOrNull(val1)和(!String.IsEmptyOrNull(val2)和&String.Equals(val1,val2))更优雅的方法{//do stuff;}我没有投你反对票,但事实是你在问如何做一个非常,非常奇怪的事情,打破了所有的规则,却没有给出任何背景,为什么可能会让一些人认为这个问题是不清楚的。另外,你问的是我们称之为“XY”的问题。你有一些真正的问题要解决,你对如何解决它有一个疯狂的想法,你在问如何让疯狂的事情发生。但是疯狂的事情是疯狂的。问一个关于你真正需要解决的问题。现在,我注意到在C#中有一些情况,等式规则在null和nan周围弯曲或被破坏。南比较起来不等于它自己,也不大于它自己,也不小于它自己。C#对于可为空整数的比较运算符也有奇数规则;它们中的两个可能相等,但不小于或等于对方,这是违反逻辑的。这些情况令人困惑且不一致,至少语言设计团队的一位前成员对这些设计选择有一些相当严重的保留。@Maderas,你的问题很清楚,你隔离了相关的代码。但有时,当我们知道你想要的代码是什么时,会出现其他的解决方法。我知道,但我希望有一种方法可以创建一个自定义的比较器来传递给这个方法。这只是一个“创造性”的想法。谢谢。@Clive,这些值是作为变量传递的。