Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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# 如何使用if语句、文本进行检查,但不使用';t检查大小写_C#_Visual Studio - Fatal编程技术网

C# 如何使用if语句、文本进行检查,但不使用';t检查大小写

C# 如何使用if语句、文本进行检查,但不使用';t检查大小写,c#,visual-studio,C#,Visual Studio,这是我的代码: if (txtboxAntwoord.Text == lblProvincie.Text) { } 我想要实现的是:生成if语句,这样它就可以检查文本是否相同,但不会检查文本是否包含大写或小写 比如说lblProvincie的text=“Some text”,我想检查txtboxAntwoord的包含文本是否相同,但它是否包含文本的大写字母并不重要。您可以对这两个值使用ToUpper()或ToLower,这样两个值的

这是我的代码:

      if (txtboxAntwoord.Text == lblProvincie.Text)
            {

            }
我想要实现的是:生成
if语句
,这样它就可以检查文本是否相同,但不会检查文本是否包含大写或小写

比如说
lblProvincie的
text=“Some text”,我想检查
txtboxAntwoord
的包含文本是否相同,但它是否包含文本的大写字母并不重要。

您可以对这两个值使用
ToUpper()
ToLower
,这样两个值的大小写都相同,你可以这样做:

if (txtboxAntwoord.Text.ToUpper() == lblProvincie.Text.ToUpper())
您可以在两个值上使用
ToUpper()
ToLower
,以便两个值的大小写大小写相同,您可以像这样执行:

if (txtboxAntwoord.Text.ToUpper() == lblProvincie.Text.ToUpper())

您可以对字符串使用
.Equals
方法,并传入忽略大小写的字符串比较选项

if (string.Equals(txtboxAntwoord.Text, lblProvincie.Text, 
               StringComparison.OrdinalIgnoreCase))
对于纯速度而言,基于文化的比较并不重要

如果您需要考虑基于文化的比较


虽然这种方法可能稍微复杂一些,但它比
ToUpper()
方法更有效,因为不需要分配新字符串。它还可以指定不同的比较选项,例如
CurrentCultureInogoreCase

虽然这可能不会对孤立上下文中的应用程序性能产生太大影响,但在进行大量字符串比较时,这肯定会产生影响

const string test1 = "Test1";
const string test2 = "test1";

var s1 = new Stopwatch();
s1.Start();

for (int i = 0; i < 1000000; i++)
{
    if (!(test1.ToUpper() == test2.ToUpper()))
    {
        var x = "1";
    }
}
s1.Stop();
s1.ElapsedMilliseconds.Dump();

var s2 = new Stopwatch();
s2.Start();
for (int i = 0; i < 1000000; i++)
{
    if(!string.Equals(test1, test2,
           StringComparison.OrdinalIgnoreCase))
    {
        var x = "1";
    }
}
s2.Stop();
s2.ElapsedMilliseconds.Dump();
常量字符串test1=“test1”; 常量字符串test2=“test1”; var s1=新秒表(); s1.Start(); 对于(int i=0;i<1000000;i++) { 如果(!(test1.ToUpper()==test2.ToUpper()) { var x=“1”; } } s1.停止(); s1.elapsedmillesons.Dump(); var s2=新秒表(); s2.Start(); 对于(int i=0;i<1000000;i++) { 如果(!string.Equals)(test1,test2, StringComparison.Ordinalingorecase) { var x=“1”; } } s2.停止(); s2.elapsedmillesons.Dump();
第一个人为的例子在我的机器上花了265毫秒进行了100万次迭代。第二个只需要25分钟。此外,每个迭代都有额外的字符串创建


根据Mike在评论中的建议,同样对
CurrentCultureInogoreCase
进行分析是公平的。这仍然比
ToUpper
更有效,耗时114毫秒,仍然是
ToUpper
的两倍多,并且不分配额外的字符串。

您可以对字符串使用
.Equals
方法,并传入忽略大小写的字符串比较选项

if (string.Equals(txtboxAntwoord.Text, lblProvincie.Text, 
               StringComparison.OrdinalIgnoreCase))
对于纯速度而言,基于文化的比较并不重要

如果您需要考虑基于文化的比较


虽然这种方法可能稍微复杂一些,但它比
ToUpper()
方法更有效,因为不需要分配新字符串。它还可以指定不同的比较选项,例如
CurrentCultureInogoreCase

虽然这可能不会对孤立上下文中的应用程序性能产生太大影响,但在进行大量字符串比较时,这肯定会产生影响

const string test1 = "Test1";
const string test2 = "test1";

var s1 = new Stopwatch();
s1.Start();

for (int i = 0; i < 1000000; i++)
{
    if (!(test1.ToUpper() == test2.ToUpper()))
    {
        var x = "1";
    }
}
s1.Stop();
s1.ElapsedMilliseconds.Dump();

var s2 = new Stopwatch();
s2.Start();
for (int i = 0; i < 1000000; i++)
{
    if(!string.Equals(test1, test2,
           StringComparison.OrdinalIgnoreCase))
    {
        var x = "1";
    }
}
s2.Stop();
s2.ElapsedMilliseconds.Dump();
常量字符串test1=“test1”; 常量字符串test2=“test1”; var s1=新秒表(); s1.Start(); 对于(int i=0;i<1000000;i++) { 如果(!(test1.ToUpper()==test2.ToUpper()) { var x=“1”; } } s1.停止(); s1.elapsedmillesons.Dump(); var s2=新秒表(); s2.Start(); 对于(int i=0;i<1000000;i++) { 如果(!string.Equals)(test1,test2, StringComparison.Ordinalingorecase) { var x=“1”; } } s2.停止(); s2.elapsedmillesons.Dump();
第一个人为的例子在我的机器上花了265毫秒进行了100万次迭代。第二个只需要25分钟。此外,每个迭代都有额外的字符串创建


根据Mike在评论中的建议,同样对
CurrentCultureInogoreCase
进行分析是公平的。这仍然比
ToUpper
更有效,需要114毫秒,这仍然是
ToUpper
的两倍多,并且不分配额外的字符串。

您正在寻找的是所谓的“不区分大小写的字符串比较”

您可以使用Ehsan Sajjad的建议来实现它,但这将是低效的,因为对于每个比较,您将生成至少一个(在他的示例中是两个,但可以优化)新字符串以包含要比较的字符串的大写版本,然后立即让该字符串被垃圾收集

David L的建议肯定会表现得更好,不过我建议不要使用
StringComparison.ordinallingorecase
,因为它忽略了当前的文化

相反,请使用以下命令:

string.Equals( text1, text2, StringComparison.CurrentCultureIgnoreCase )

您需要的是“不区分大小写的字符串比较”

您可以使用Ehsan Sajjad的建议来实现它,但这将是低效的,因为对于每个比较,您将生成至少一个(在他的示例中是两个,但可以优化)新字符串以包含要比较的字符串的大写版本,然后立即让该字符串被垃圾收集

David L的建议肯定会表现得更好,不过我建议不要使用
StringComparison.ordinallingorecase
,因为它忽略了当前的文化

相反,请使用以下命令:

string.Equals( text1, text2, StringComparison.CurrentCultureIgnoreCase )

查看考虑情况的重载和各种比较方法的概要,查看重载考虑情况和各种比较方法的摘要,而这种方法是简单的,它创建了两个不必要的字符串,即“史提夫字符串”。在这种情况下,单一情况下的差异将毫无意义