C# 在C中比较字符串与Unicode字符#

C# 在C中比较字符串与Unicode字符#,c#,string,unicode,C#,String,Unicode,正如我们所知,要用字符比较两个字符串,我们在字符串前面加上N。比如: N'I am the ````king'.equals(x) (在SQL server和x中也包含相同的Unicode字符。) 这是我们可以在SQLServer中编写的 但是假设我有一个代码,它有一个变量叫做x: string x="Hi! I am good ````'" (使用一些Unicode字符。) 还有另一个变量,y,我需要在C#code中与之进行比较 如何将N值附加到带有代码的字符串中?C#中的所有字符串都是

正如我们所知,要用字符比较两个字符串,我们在字符串前面加上N。比如:

N'I am the ````king'.equals(x) 
(在SQL server和x中也包含相同的Unicode字符。)

这是我们可以在SQLServer中编写的

但是假设我有一个代码,它有一个变量叫做
x

string x="Hi! I am good ````'"
(使用一些Unicode字符。)

还有另一个变量,
y
,我需要在C#code中与之进行比较

如何将
N
值附加到带有代码的字符串中?

C#中的所有字符串都是Unicode字符串。它们基于UTF-16代码单元称为
char
,每个
char
都只是一个16位整数

如果
x
y
是C#(对
字符串的引用),则两者都是

x == y

执行顺序相等比较。因此,
x
y
必须是完全相同的16位代码单元序列,才能将其计算为
true
。不执行Unicode规范化

.NET提供了其他方法来进行与区域性相关的比较,或不区分大小写的比较。这些比简单的顺序比较更复杂。您还可以使用Unicode规范化
x
y
并比较结果。

在C#中,您可以使用==运算符在两个字符串之间执行二进制相等比较。该运算符实际上将调用静态方法,该方法将正确地处理空引用,与方法不同

如果要进行区分区域性和/或不区分大小写的比较,可以使用该方法并指定适当的值:CurrentCulture、CurrentCultureIgnoreCase、Ordinal或OrdinalIgnoreCase。(也有不变量文化和不变量文化识别码,但不鼓励使用)

如果要对字符串进行排序,可以使用的重载之一。使用的最佳实践是在显式指定或的地方始终使用一个重载。(如果您希望基于特定区域性执行字符串比较,那么指定a的那些特别有用。)

C语言与TSQL语言没有任何关系。C#中的所有字符串比较都是Unicode比较。不要帮忙。
x.Equals(y)
if (x == y) { Console.WriteLine("The variables x and y are equal."); }
if (string.Equals(x, y, StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("The variables x and y are equal by using the OrdinalIgnoreCase comparison."); }