• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.net 2010 文字定数ってありますか?)

VB.net 2010 文字定数ってありますか?

このQ&Aのポイント
  • VB.net 2010には文字定数の概念があるのか疑問です。
  • C-Builderとは異なり、VBでプログラムを書くことになったのですが、文字定数の使い方が分かりません。
  • 具体的には、文字定数を使ってデータの比較を行いたいのですが、VBでの実現方法が分からず困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.4

#3のコードをコンパイルしたものを、ILSpyで逆コンパイルしてみました。  Dim iTst As Integer = 65  Dim iSts As Integer  If iTst = 65 Then   iSts = 0  Else   iSts = 1  End If Microsoft.VisualBasic.Asc("A"c)をちゃんと定数に展開してくれているみたいです。

TinyPine
質問者

お礼

再度のご回答ありがとうございます。 ASC()は関数の形をして居ますが、プレコンパイル形式なんでしょうかね。 ILSpyは使った事が無いので、これで構造を確認して、使えそうならこのコーディングにしてみます。 ありがとうございました。

その他の回答 (6)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.7

「Goに行ってはGoに従え」 他の言語の手法を無理に持ってこない、というのが、プログラミングのコツだと思っています。 Cでは、純粋な「文字」という型がありません。 char は整数の一つであって、「文字」ではありません。 VBでは、純粋な文字を表現するための型があります。数値で代用する必要がありません。 A という文字には、もともと番号なんてありません。65というのは、ASCIIで決めたものです。 「iDataの数値が"A"のASCIIコードだったら」という意味を明確に表わしているのは、VBの方では。 また、最近の言語は、いろんな最適化が行われます。 下手なチューニングは逆効果、ということもあります。 VBでは、数値も「オブジェクト」です。Cの数値のような高速性を求めてはいけません。 iDataも、CharやStringする方が簡単、とかはないですか?

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.6

Keys列挙体だと'A'は判定できても'a'は判定できない気が……

  • uruz
  • ベストアンサー率49% (417/840)
回答No.5

VB.netから言語仕様が変更されて文字の定数はなくなり列挙体となりました。 Keys 列挙体でヘルプを参照してください。 if iDat = Keys.A then   flag =1 else   flag = 2 end if

TinyPine
質問者

お礼

ご回答ありがとうございました。 Keysに関してMSDNを読んでみましたが、これはキーボードのキーと1対1で設定されている定数で、私の目的とする定数とは異なるものでした。 ありがとうございました。

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.3

こんな感じかな? Dim iTst As Integer Dim iSts As Integer iTst = 65 If iTst = Microsoft.VisualBasic.Asc("A"c) Then  iSts = 0 Else  iSts = 1 End If

TinyPine
質問者

お礼

ご回答ありがとうございます。 このコーディングでコンパイラーは通りました。 ただ、これはasc関数ですよね、定数では無いと思います。 すると、やはりVBには文字定数と言う概念は無いのかも知れませんね。 * 定数 そのまま値として使用出来る。この場合、値を変換する処理時間は不要。  即ちコンパイラーが値を処理し、実行時には即値と成っているので処理時間は不要。  関数 その値を処理して値を返す。この場合は値を変換するのに実行時に処理時間がかかる。 ありがとうございました。

回答No.2

"A"cのように書きます。 MSDNでは, 文字型 (Char) (Visual Basic) http://msdn.microsoft.com/ja-jp/library/7sx7t66b(v=vs.100).aspx の「プログラミングのヒント」に, > 型宣言文字。 1 文字のリテラル文字列に、リテラルの型文字 C を追加すると、Char データ型に変換されます。 Char には識別子の型文字はありません。 のように書かれています。 # 見つけにくいですが……。

TinyPine
質問者

お礼

ご回答ありがとうございます。 ただ、残念ながら私が探しているコードとは異なる物と思われます。 試しにコーディングしてみた所、エラーと成ってしまいました。 Dim iTst As Integer Dim iSts As Integer iTst = 65 If iTst = "A"c Then iSts = 0     else iSts = 1 End If でIf iTst = "A"c Then の所に"演算子'='は、型'Integer'および型'Char'に対して定義されていません。"と表示されました。 上記コーディングでAの値はデシマルの65ですからiStsが0に設定出来ればよいのですが。 ありがとうございました。

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

const のことを言ってます? http://msdn.microsoft.com/ja-jp/library/cyxe49xw(v=vs.90).aspx 探しましたか。

TinyPine
質問者

お礼

早速のご回答ありがとうございます。 ただ、私が求めているのは Const では無い感じです。 Constは文字を定数に定義しているので、コーディング上は使えると思いますが、私のやりたいのは(VBに存在いるとして) コーディングして居る行にそのまま値を書く方法です。 多分ConstはC で言う#define AAA 5    // AAA を 5とする と同じだと思います。Const A as integer 65 とすれば良いのでしょうけど、Aが65である根拠がこの行では表現出来ず、コメントで 65は 文字のAの値であると書かないと成らないと思います。 ありがとうございました。

関連するQ&A