
こんにちわ。
ちょっと疑問に思いまして、お聞きしたいのですが。
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件)
- 最新から表示
- 回答順に表示
No.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.と打った時点で出ませんか?
私は出ましたが。
No.2
- 回答日時:
はじめまして
この質問は、定数か構造体どちらの質問でしょうか?
定数なら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思考のデータを中心とした考えの場合、ずれてないようにも
思えます。
あくまで、人それぞれの考え方もあると思うので
どうなのかな?程度に質問しました・・・
判りにくい文章で、申し訳ございません。
No.1
- 回答日時:
Enum(列挙型)があるので、そちらで実現できます。
Public Enum TEST As Integer
CNUM = 1
End Enum
この回答への補足
ご回答有難うございます。
返答が遅くなりすみません。
VS VB.net2005ではTEST.と打った時点では
ENUMの場合出てこないですね。
質問の内容がわかりにくくすみません。
内容としては、定数を構造体で持つことで
開発時のストレスを軽減するために、このような
方法で行ってる人はいるのかな? 程度でした・・・
実際に定数を管理する上で、ある程度名前を記憶していますが
一部忘れることが多々あり、上記のような方法を思いついたのです。
VB.net2005ではエラーもなく、問題なく動作していたので。
あとENUMだとString型は持てないので、上記の方法はどうなのかな?
というのもありました。(これは情報不足でした。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Java java final 1 2022/06/10 22:49
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プロシージャまたは関数の引数...
-
パーソナルXLSBのfuctionを呼び...
-
整数を二つ読み込み、それらの...
-
【VBScript】変数のスコープ
-
HTML + VBScript で Sleep でき...
-
【VB6.0】 あるフォームから他...
-
ExcelのVBA。Staticな変数について
-
【HTML、VBScript】HTAアプリケ...
-
VBA public変数はどのようなこ...
-
C#のループでtextboxに値を入れ...
-
アクセスできない保護レベルエ...
-
【VB.NET】テキストボックスに...
-
エクセルVBAでテキストボッ...
-
他のフォームから別のフォーム...
-
ExcelVBAで他のファイル(proje...
-
コンボボックスのClickイベント
-
VB.NETでのイベントの途中終了
-
共有フォルダの「共有のアクセ...
-
チェックボックスを操作できな...
-
VB.NET コンボボックスからのit...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パーソナルXLSBのfuctionを呼び...
-
【VB6.0】 あるフォームから他...
-
プロシージャまたは関数の引数...
-
定数を構造体で・・・
-
PL/SQLのプロシージャ間でカー...
-
HTML + VBScript で Sleep でき...
-
【HTML、VBScript】HTAアプリケ...
-
変数の宣言はすべきでしょうか...
-
Excel VBA カーソルを当てた際...
-
subを連続で実行する
-
VB2010からPROCEDUREを実行でエ...
-
VB6のFriendについて
-
Callで呼び出したプロシージャ...
-
ExcelのVBA。Staticな変数について
-
整数を二つ読み込み、それらの...
-
プログラムの素朴な質問です 分...
-
ArrayListに格納したクラス内の...
-
プロシージャを呼び出したプロ...
-
【VBScript】変数のスコープ
-
VBA public変数はどのようなこ...
おすすめ情報