アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちわ。
ちょっと疑問に思いまして、お聞きしたいのですが。
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言語出身なもので、
色々試していて疑問におもったのです。

もっとほかによい方法あるよ!ってのが
あればお教えください。

お暇なときでよいので回答お願い致します^^
  

A 回答 (3件)

私なら構造体よりクラスを使います。

以下のような感じで。
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.と打った時点で出ませんか?
私は出ましたが。
    • good
    • 0

はじめまして


この質問は、定数か構造体どちらの質問でしょうか?
定数なら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のような初期化が出来ないのが難点ですね。

この回答への補足

ご返答有難うございます。

定数と構造体の両方の質問です。
isomaruさんの場合VB.net2005ではないように思えます。

私自身、VB.net2005しか使ったこと無いので
いまいち判りませんが。
「type」はサポートされていません。と出ます。

実際に私の質問のコードを書いた場合
構造体の宣言部分ですが・・・・なぜか定数を定義することが出来。
かつ、正常に動きます・・・
構造体の概念的には、たしかにずれてるのですが・・・
OBJ思考のデータを中心とした考えの場合、ずれてないようにも
思えます。

あくまで、人それぞれの考え方もあると思うので
どうなのかな?程度に質問しました・・・

判りにくい文章で、申し訳ございません。

補足日時:2007/05/26 11:36
    • good
    • 0

Enum(列挙型)があるので、そちらで実現できます。



Public Enum TEST As Integer
  CNUM = 1
End Enum

この回答への補足

ご回答有難うございます。
返答が遅くなりすみません。

VS VB.net2005ではTEST.と打った時点では
ENUMの場合出てこないですね。

質問の内容がわかりにくくすみません。
内容としては、定数を構造体で持つことで
開発時のストレスを軽減するために、このような
方法で行ってる人はいるのかな? 程度でした・・・

実際に定数を管理する上で、ある程度名前を記憶していますが
一部忘れることが多々あり、上記のような方法を思いついたのです。

VB.net2005ではエラーもなく、問題なく動作していたので。
あとENUMだとString型は持てないので、上記の方法はどうなのかな?
というのもありました。(これは情報不足でした。)

補足日時:2007/05/26 11:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています