想改进这个问题吗 通过编辑此帖子,更新问题,以便用事实和引用来回答。
Closed 10 years ago.
我使用c#winf或ms,想知道如何更好地编写以及为什么。
if(txtName.Text == "John")
;
或
String name = txtName.Text
if (name == "John")
;
编辑:谢谢你们帮了我很多!!!
想改进这个问题吗 通过编辑此帖子,更新问题,以便用事实和引用来回答。
Closed 10 years ago.
我使用c#winf或ms,想知道如何更好地编写以及为什么。
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
进行连接(如果你将其连接到Text
您处于多线程环境中,希望将文本
保持在当前状态,因为它可以更改,因为用户界面对用户可用,并且可以在某些操作期间更改其值。
你只是喜欢变量坚强的如果你发现使用变量可以更好地阐明你的代码并增加意义,为什么不呢?如今,电脑,甚至手机,都有很多内存,一个、两个或三个变量不会改变任何事情(也许多1KB?哇!)。
仅此而已。
if (String.Equals(txtName.Text, "John", StringComparison.OrdinalIgnoreCase)) {
// ...Code.
}
对于字符串比较,我建议:
string.compare(strA, strB, stringComparisonMethod)
对于访问文本来说,这并不重要,第二种方式更友好,但两者都会做同样的事情
我认为后者更好,因为你将使用更少的变量,即name
。除了我看不出有什么区别(造型显然取决于你自己)
如果你在代码的其他部分使用这个值,我会定义一个变量。否则,请使用较短的版本。
在C#中,你不必使用。等于比较字符串(响应注释)。==做同样的事情。
if(txtName.Text == "John")
这是您所展示的更传统、更有效的方法。
String name = txtName.Text
if (name == "John")
;
声明额外的变量“name”将增加代码大小,除了增加程序内存外,还有其他好处。有一次,我尝试并发现声明额外的变量并为其分配文本,然后访问此变量而不是文本属性txtName。文本使其效率低于通过属性访问。
What is the use of default keyword in C#? Is it introduced in C# 3.0 ?
I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...
I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...
I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...
I have two EF entities. One has a property called HouseNumber. The other has two properties, one called StartHouseNumber and one called EndHouseNumber. I want to create a many to many association ...
How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...
Since I cannot order my dictionary, what is the best way of going about taking key value pairs and also maintaing an index?
Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...