1

仮想キーボードを含む wpf アプリケーションを実行しています。CapsLock ボタンをクリックすると、次の通知が表示されます。

Possibility of comparing references involuntary for a comparison of values​​, cast the left hand side to type 'string'

この行で:

if (btnVK_A.Content == "a")
     btnVK_A.Content = "A";
else
     btnVK_A.Content = "a";

文字列にキャストしbtnVK_A.Contentましたが、通知はまだ表示されています。では、どうすればこれを修正できますか?

4

3 に答える 3

4

これを試して :

if ((btnVK_A.Content as string) == "a")

asキーワードとの違いToString():

この 2 つは異なる目的のために意図されています。オブジェクトのToStringメソッドは、そのオブジェクトの文字列表現を返すことになっています。キャストはまったく異なり、前述のように、asキーワードは条件付きキャストを実行します。asキーワードは基本的に、「そのオブジェクトがこのタイプである場合、そのオブジェクトへのこのタイプの参照を取得してください」と言いToString、「そのオブジェクトの文字列表現を取得してください」と言います。場合によっては結果が同じになることもありますが、前述したように、これらは別の目的で存在するため、この 2 つを交換可能と見なすべきではありません。キャストすることが意図されている場合は、常にキャストを使用する必要がありますToString

于 2013-04-10T13:58:01.003 に答える
0

btnVK_A.Content.ToString() または (文字列) btnVK_A.Content を使用してみましたか? Button Content プロパティはオブジェクト型であるため、比較する前に文字列にキャストまたは変換しないと、コンパイラから警告が表示されます。

于 2013-04-10T13:47:12.467 に答える