- 締切済み
定数を構造体で・・・
こんにちわ。 ちょっと疑問に思いまして、お聞きしたいのですが。 VB.net2005を使用しています。 定数宣言を構造体で宣言するのは 考え方として変でしょうか? たとえば public structure TEST public dmy as byte '←エラー解除のダミー public const CNUM as integer = 1 end structure public sub testM() Lbl1.Text = TEST.CNUM end sub のように作り 定数宣言が多くあった場合に いちいちページ切り替え等をしなくても TEST.と打った後にすぐに一覧がでてくるので 便利だと思ったのですが。 この考え方はやっぱりへんなんですかね? もともとC言語出身なもので、 色々試していて疑問におもったのです。 もっとほかによい方法あるよ!ってのが あればお教えください。 お暇なときでよいので回答お願い致します^^
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- pen_pen_pen
- ベストアンサー率65% (52/79)
私なら構造体よりクラスを使います。以下のような感じで。 Public NotInheritable Class TEST Public Const CNUM As Integer = 1 End Class 構造体の場合、 public dmy as byte というメンバを持たせてますね。 きっと質問者さんも不本意ながら、何も無いとエラーになるので仕方なく入れているのではないかとお察しします。 クラスなら、上のように必要な定数だけでも大丈夫です(^^) また、Enumと違いString型でも使えますよ。 あと気になったので。 No1さんへの回答への補足で、 >VS VB.net2005ではTEST.と打った時点では >ENUMの場合出てこないですね。 とありますが、TEST.と打った時点で出ませんか? 私は出ましたが。
- isomaru
- ベストアンサー率33% (1/3)
はじめまして この質問は、定数か構造体どちらの質問でしょうか? 定数ならEnumで解決できると思います 構造体は以下のようにすれば使用できます。 ●標準モジュール Option Explicit '(1)構造体の宣言 '(宣言なので定数は指定できません) Public Type TEST cc As Byte CNUM As Integer End Type '(2)構造体の実装 'Cでも同じですね Public ttest As TEST ●Formのコード Option Explicit Private Sub TestM() Text1.Text = ttest.CNUM End Sub Private Sub Form_Load() '(3)CNUMの初期化 ttest.CNUM = 1 End Sub 構造体は非常に便利なのでよく使用します (例えば関数の戻り値等) が、VBではCのような初期化が出来ないのが難点ですね。
- unamana19
- ベストアンサー率62% (56/89)
Enum(列挙型)があるので、そちらで実現できます。 Public Enum TEST As Integer CNUM = 1 End Enum
補足
ご回答有難うございます。 返答が遅くなりすみません。 VS VB.net2005ではTEST.と打った時点では ENUMの場合出てこないですね。 質問の内容がわかりにくくすみません。 内容としては、定数を構造体で持つことで 開発時のストレスを軽減するために、このような 方法で行ってる人はいるのかな? 程度でした・・・ 実際に定数を管理する上で、ある程度名前を記憶していますが 一部忘れることが多々あり、上記のような方法を思いついたのです。 VB.net2005ではエラーもなく、問題なく動作していたので。 あとENUMだとString型は持てないので、上記の方法はどうなのかな? というのもありました。(これは情報不足でした。)
補足
ご返答有難うございます。 定数と構造体の両方の質問です。 isomaruさんの場合VB.net2005ではないように思えます。 私自身、VB.net2005しか使ったこと無いので いまいち判りませんが。 「type」はサポートされていません。と出ます。 実際に私の質問のコードを書いた場合 構造体の宣言部分ですが・・・・なぜか定数を定義することが出来。 かつ、正常に動きます・・・ 構造体の概念的には、たしかにずれてるのですが・・・ OBJ思考のデータを中心とした考えの場合、ずれてないようにも 思えます。 あくまで、人それぞれの考え方もあると思うので どうなのかな?程度に質問しました・・・ 判りにくい文章で、申し訳ございません。