我使用 c# winforms 并想知道如何更好地编写以及为什么。
if(txtName.Text == "John")
;
或者
String name = txtName.Text
if (name == "John")
;
编辑:谢谢你们帮了我很多!!!
我使用 c# winforms 并想知道如何更好地编写以及为什么。
if(txtName.Text == "John")
;
或者
String name = txtName.Text
if (name == "John")
;
编辑:谢谢你们帮了我很多!!!
第二个版本毫无意义——它更长,可读性更低,并且引入了一个额外的变量(尽管一个好的编译器会摆脱它,假设它没有在其他地方使用)。
在这两个选择中,这个更好:
if(txtName.Text == "John")
虽然我会选择第三个:
if(txtName.Text.Equals("John", StringComparison.InvariantCultureIgnoreCase)
您可能希望该StringComparison
选项为不同的枚举值,具体取决于您希望如何进行比较。
为简单起见,我会选择:
if(txtName.Text.Equals("John"))
也许我错了,但其他人正在回答一些复杂的情况,而 OP 建议的情况并非如此。
什么更好?
事实上,它是一样的。有一个区别:第一种方法是将控件的文本存储在一个变量中,然后检查它是否等于 John。第二种方法做同样的事情,但它通过调用Text
属性直接获取控件的文本访问其字符串值。
何时使用变量以及何时直接访问属性?这只是一个假设,因为这取决于每个特定的用例,但一般来说,如果您访问它的对象(文本)只是为了在某个时间检查它,请直接调用Text
属性,否则,您会想要在以下情况下将其存储在某个变量中:
如果您想在Text
不影响 this 保存的文本的情况下Text
与
您处于多线程环境中,并且希望进入Text
其当前状态,因为它可以更改,因为用户界面可供用户使用,并且它可以在某些操作期间更改其值。
你只是喜欢变量!. 如果您发现使用变量可以更好地阐明您的代码并增加含义,为什么不呢?现在的电脑,甚至是手机,都有很多内存,一个、两个或三个变量不会改变任何东西(也许多 1KB?哇哦!)。
就这样。
阅读在 .NET Framework 中使用字符串的最佳实践。
if (String.Equals(txtName.Text, "John", StringComparison.OrdinalIgnoreCase)) {
// ...Code.
}
if(txtName.Text == "John")
这是您展示的这些更传统和更有效的方式。
String name = txtName.Text
if (name == "John")
;
声明额外的变量“名称”将增加代码大小,除了增加程序内存之外还有其他好处。一旦我尝试并发现声明额外的变量并将文本分配给它,然后访问此变量而不是文本属性 txtName.Text 使其效率低于通过属性访问。
对于字符串比较,我建议:
string.compare(strA, strB, stringComparisonMethod)
对于访问文本无关紧要,第二种方式更友好,但两者都会做同样的事情
我认为后者更好,因为您将使用较少的变量,即name
. 除了我没有看到任何区别(样式显然取决于你自己)
如果您在代码的其他部分使用该值,我会定义一个变量。否则,请使用较短的版本。
在 C# 中,您不必使用 .Equals 来比较字符串(响应注释)。== 做同样的事情。