C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

char型とstring型

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■89561 / inTopicNo.1)  char型とstring型
  
□投稿者/ 34 (14回)-(2018/12/04(Tue) 15:57:59)

分類:[C#] 

VB.NETからC#への移植作業を進めているプログラミング初心者です。

VB.NET)
If e.KeyChar = "t" Or e.KeyChar = "39" Then

C#)
if (e.KeyChar == "t" | e.KeyChar == "39")

C#のコードのeから"まで赤の波線が表れ
「演算子 '=='を'char'と'string'型のオペランドに適用することはできません。」
と言うエラーが表示されます。どう解決すればいいでしょうか。お願い致します。
引用返信 編集キー/
■89562 / inTopicNo.2)  Re[1]: char型とstring型
□投稿者/ にゃるら (53回)-(2018/12/04(Tue) 16:21:13)
うんと

    if (e.KeyChar == 't' || e.KeyChar == (char)39)

かな?

引用返信 編集キー/
■89563 / inTopicNo.3)  Re[1]: char型とstring型
□投稿者/ 魔界の仮面弁士 (1969回)-(2018/12/04(Tue) 17:03:31)
No89561 (34 さん) に返信
> VB.NET)
> If e.KeyChar = "t" Or e.KeyChar = "39" Then

上記の VB コードは、どういう動作となることを意図したものでしょうか?


Option Strict On の時に VB のコンパイルが通らなくなることには目を瞑るとしても、
そもそも e.KeyChar が "39" という文字列とヒットすることは無いと思うのですが…。

とりあえず、「小文字の "t" もしくは シングルクォートの "'"」にヒットさせるなら
 If e.KeyChar = "t"c OrElse e.KeyChar = ChrW(39) Then
とします。Or ではなく OrElse の方が望ましいです。


> C#)
> if (e.KeyChar == "t" | e.KeyChar == "39")
元の VB コードのまま、Or をそのまま翻訳するなら、
 if (e.KeyChar == 't' | e.KeyChar == 39)
なのですが、普通は OrElse の意図となるはずなので、実際には
 if (e.KeyChar == 't' || e.KeyChar == 39)
と書くことになるでしょう。
引用返信 編集キー/
■89564 / inTopicNo.4)  Re[2]: char型とstring型
□投稿者/ 魔界の仮面弁士 (1970回)-(2018/12/04(Tue) 17:10:23)
No89563 (魔界の仮面弁士) に追記
> If e.KeyChar = "t"c OrElse e.KeyChar = ChrW(39) Then
VB 別案
 If e.KeyChar = "t"c OrElse e.KeyChar = "'"c Then
 If e.KeyChar.ToString() Like "[t']" Then


> if (e.KeyChar == 't' || e.KeyChar == 39)

C# 別案
 if (e.KeyChar == 't' || e.KeyChar == '\'')
 if (e.KeyChar == 't' || e.KeyChar == '\u0027')
 if (e.KeyChar == 't' || e.KeyChar == (char)0x27)
 if (e.KeyChar == 't' || e.KeyChar == (char)39)
引用返信 編集キー/
■89565 / inTopicNo.5)  Re[2]: char型とstring型
□投稿者/ 魔界の仮面弁士 (1971回)-(2018/12/05(Wed) 12:03:51)
No89563 (魔界の仮面弁士) に追記
>>VB.NET)
>>If e.KeyChar = "t" Or e.KeyChar = "39" Then
> とりあえず、「小文字の "t" もしくは シングルクォートの "'"」にヒットさせるなら

もしも上記の "39" というのが、
「'」(ASCII コード 39)の意味ではなく、
「→」(仮想キーコード 39)の意味だとしたら、
KeyPress イベントではなく、
KeyDown/KeyUp イベントに変更する必要があるでしょう。


Visual Basic の場合:
 If e.KeyCode = Keys.T OrElse e.KeyValue = 39 Then
 If e.KeyCode = Keys.T OrElse e.KeyCode = Keys.Right Then
 

C# の場合:
 if (e.KeyCode == Keys.T || e.KeyValue == 39)
 if (e.KeyCode == Keys.T || e.KeyCode == Keys.Right)
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ