私は 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")
;
編集:あなたが私をたくさん助けてくれてありがとう!!!
2 番目のバージョンは無意味です。より長く、読みにくく、1 つの余分な変数が導入されています (ただし、他の場所で使用されていないと仮定すると、優れたコンパイラはそれを取り除きます)。
2 つの選択肢のうち、こちらの方が優れています。
if(txtName.Text == "John")
私は3番目に行きますが:
if(txtName.Text.Equals("John", StringComparison.InvariantCultureIgnoreCase)
比較を行う方法に応じて、StringComparison
オプションを異なる列挙値にすることができます。
たぶん私は間違っているかもしれませんが、他の人はOPによって提案されたケースではないいくつかの複雑なシナリオに答えています.
何が良いですか?
実際、それは同じです。1 つの違いがあります。最初のアプローチでは、コントロールのテキストを変数に格納し、後でそれが John と等しいかどうかを確認します。2 番目のアプローチは同じことを行いますが、Text
プロパティを呼び出すことによって直接その文字列値にアクセスするコントロールのテキストを取得します。
いつ変数を使用し、いつプロパティに直接アクセスするのですか? これは特定のユースケースに依存するため、単なる仮定ですが、一般的には、オブジェクト (テキスト) にアクセスしている場合は、プロパティを直接呼び出しText
て、そのオブジェクトを確認するためだけに呼び出します。それ以外の場合は、次の場合に変数に格納します。
Text
this が保持するテキストに影響を与えずにと何らかの連結を行いたい場合(これを に連結Text
する場合は、アプリのユーザー インターフェイスでも変更する必要があります!)。
Text
マルチスレッド環境にいて、ユーザーがユーザー インターフェイスを使用でき、操作中にその値が変更される可能性があるため、現在の状態を取得したいと考えています。
あなたは変数が好きです!. 変数を使用するとコードがより明確になり、意味が追加されることがわかった場合は、それはなぜですか? 今日のコンピュータは、携帯電話でさえ、大量のメモリを備えており、1 つ、2 つ、または 3 つの変数では何も変化しません (おそらく 1KB 多いですか? すごい!)。
それで全部です。
簡単にするために、次のようにします。
if(txtName.Text.Equals("John"))
.NET Framework で文字列を使用するためのベスト プラクティスを参照してください。
if (String.Equals(txtName.Text, "John", StringComparison.OrdinalIgnoreCase)) {
// ...Code.
}
if(txtName.Text == "John")
これは、あなたが示したこれらのより従来的で効率的な方法です。
String name = txtName.Text
if (name == "John")
;
追加の変数「name」を宣言すると、コード サイズが大きくなり、プログラム メモリの増加以外の利点があります。追加の変数を宣言してテキストを割り当て、後でテキストプロパティtxtName.Textの代わりにこの変数にアクセスしようとすると、プロパティを介してアクセスするよりも効率が低下します。
文字列の比較については、次のことをお勧めします。
string.compare(strA, strB, stringComparisonMethod)
テキストにアクセスする場合は問題ありません。2 番目の方法の方が使いやすいですが、どちらも同じことを行います。
使用する変数が少ないため、後者の方が良いと思いますname
。違いが見られないことを除いて(スタイリングは明らかにあなた次第です)
コードの他の部分で値を使用している場合は、変数を定義します。それ以外の場合は、短いバージョンを使用してください。
C# では、(コメントに応答して) 文字列を比較するために .Equals を使用する必要はありません。== は同じことを行います。