1

我使用 c# winforms 并想知道如何更好地编写以及为什么。

if(txtName.Text == "John")
    ;

或者

String name = txtName.Text
if (name == "John")
    ;

编辑:谢谢你们帮了我很多!!!

4

8 回答 8

4

第二个版本毫无意义——它更长,可读性更低,并且引入了一个额外的变量(尽管一个好的编译器会摆脱它,假设它没有在其他地方使用)。

在这两个选择中,这个更好:

if(txtName.Text == "John")

虽然我会选择第三个:

if(txtName.Text.Equals("John", StringComparison.InvariantCultureIgnoreCase)

您可能希望该StringComparison选项为不同的枚举值,具体取决于您希望如何进行比较。

于 2012-05-27T16:51:03.717 回答
3

为简单起见,我会选择:

if(txtName.Text.Equals("John"))
于 2012-05-27T16:50:51.950 回答
3

也许我错了,但其他人正在回答一些复杂的情况,而 OP 建议的情况并非如此。

什么更好?

事实上,它是一样的。有一个区别:第一种方法是将控件的文本存储在一个变量中,然后检查它是否等于 John。第二种方法做同样的事情,但它通过调用Text属性直接获取控件的文本访问其字符串值。

何时使用变量以及何时直接访问属性?这只是一个假设,因为这取决于每个特定的用例,但一般来说,如果您访问它的对象(文本)只是为了在某个时间检查它,请直接调用Text属性,否则,您会想要在以下情况下将其存储在某个变量中:

  • 如果您想在Text不影响 this 保存的文本的情况下Text

  • 您处于多线程环境中,并且希望进入Text其当前状态,因为它可以更改,因为用户界面可供用户使用,并且它可以在某些操作期间更改其值。

  • 你只是喜欢变量!. 如果您发现使用变量可以更好地阐明您的代码并增加含义,为什么不呢?现在的电脑,甚至是手机,都有很多内存,一个、两个或三个变量不会改变任何东西(也许多 1KB?哇哦!)。

就这样。

于 2012-05-27T19:11:30.080 回答
2

阅读在 .NET Framework 中使用字符串的最佳实践

if (String.Equals(txtName.Text, "John", StringComparison.OrdinalIgnoreCase)) {
   // ...Code.
}
于 2012-05-27T16:55:43.883 回答
1
if(txtName.Text == "John")

这是您展示的这些更传统和更有效的方式。

String name = txtName.Text
if (name == "John")
    ;

声明额外的变量“名称”将增加代码大小,除了增加程序内存之外还有其他好处。一旦我尝试并发现声明额外的变量并将文本分配给它,然后访问此变量而不是文本属性 txtName.Text 使其效率低于通过属性访问。

于 2012-05-27T16:52:20.857 回答
1

对于字符串比较,我建议:

string.compare(strA, strB, stringComparisonMethod)

对于访问文本无关紧要,第二种方式更友好,但两者都会做同样的事情

于 2012-05-27T16:52:33.863 回答
1

我认为后者更好,因为您将使用较少的变量,即name. 除了我没有看到任何区别(样式显然取决于你自己)

于 2012-05-27T16:53:16.540 回答
1

如果您在代码的其他部分使用该值,我会定义一个变量。否则,请使用较短的版本。

在 C# 中,您不必使用 .Equals 来比较字符串(响应注释)。== 做同样的事情。

于 2012-05-27T16:53:41.647 回答