- - PR -
C#.NETで別クラスの構造体の参照方法について
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-12-08 11:06
お世話になります。
C#.NETの勉強をしています。 メインソースと変数定義用のソースを別クラスで管理しようと考えているのですが、 構造体の記述方法が分かりません。 例えば座標(x,y)を格納する構造体変数を定義する際に、 クラス:ClsHensu 構造体:stru_test(要素:int x,int y)とした場合、
このように.演算子で変数を呼び出したいと思い、色々と方法を考えたのですが、 方法が思い浮かびません。 構造体でなければ、以下のコードで変数の呼出は可能でした。
ただ、この方法では、x座標とy座標をセットで管理できないため、 出来れば構造体を使用したいと考えております。 別クラスに作成した構造体を呼び出す方法について、 恐れ入りますが方法をお教え頂けますでしょうか。 環境は、WindowsXP SP2、VS.NET 2005です。 よろしくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2008-12-08 11:23
こんにちわ。
もし、要件がこれだけなのであれば、 System.Drawing.Pointを見てみるといいかもしれません。 まあそれはともかくとして、何故構造体としたいのでしょう? x座標とy座標のセット管理であれば、次のようなコードで可能であると思います。
構造体にすることで、何を望むのか、その点を明らかにしたほうがよろしいのではないかと思います。 http://msdn.microsoft.com/ja-jp/library/saxz13w4(VS.80).aspx [追記] もしくはこういうことですかね? http://msdn.microsoft.com/ja-jp/library/0taef578(VS.80).aspx [ メッセージ編集済み 編集者: Toshi 編集日時 2008-12-08 11:30 ] | ||||||||||||||||
|
投稿日時: 2008-12-08 15:00
どうしても構造体にしたいのであれば、
とするか、または
とするかのいずれか。 | ||||||||||||||||
|
投稿日時: 2008-12-09 01:29
>Toshiさん、かずくんさん
回答ありがとうございます。 構造体を必ずしも使用する必要は無いのですが、後学の為に学ぼうと考えておりました。 関数を使う方法は思いついたのですが、.演算子を使う(=で値を渡す)方が、他の変数と同じように使える為、使い勝手が良いと思うので実現方法を探していました。 回答の内容からすると出来なさそうですね。 構造体を強引に使うメリットはなさそうです。 そもそも、変数を扱うクラスを2つ用意して、片方を座標専用にすれば構造体のように使えると思いました。 というか、最初から気づけよって話ですが・・・。 Toshiさんに教えて頂いたpointクラス?については存在を知りませんでした。 座標を扱う時に有効に使えそうなので、調べてみます。 情報ありがとうございました。 | ||||||||||||||||
|
投稿日時: 2008-12-09 07:35
cls とか stru といった、意味のないシステム ハンガリアンはやめましょう。
もっと、コードを文書として読むときに意味のある、言葉にしましょう。 | ||||||||||||||||
|
投稿日時: 2008-12-10 02:04
>Jittaさん
ご指摘ありがとうございます。 変数の頭には変数の型を付けるようにしているのですが、 その癖でクラスや構造体まで同じにしていましたね。 正直なところ、変数に意味のある名前を付けるのが苦手なのですが、 Jittaさんのお勧めの命名規則はありますか。 「int型の定数」「string型の変数」「別クラスにある配列double型の変数」のように 上げれば切りがないですが、 これらをうまく認識できるような命名規則があれば是非使いたいと思います。 | ||||||||||||||||
|
投稿日時: 2008-12-10 09:12
名前で認識させようと思っている限りは無理でしょう。 http://msdn.microsoft.com/ja-jp/library/ms229002(VS.80).aspx _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2008-12-11 00:52
スレの内容と少々ずれてきましたが、折角ご指摘頂いておりますので、
継続しようと思います。 >じゃんぬねっとさん ご指摘ありがとうございます。 お蔭様で、Jittaさんのおっしゃるハンガリアンの意味が分かりました。 お恥ずかしい限りなのですが、頭文字にintやstrなどのハンガリアンライク?な変数名を 今まで使っており、これが普通と思っておりました。 何度も質問して恐縮ですが、ハンガリアン記法とならない変数の命名について、 サンプルなどお教え頂けますでしょうか。 私のイメージとしては、 string Hankaku; //半角文字(string型) int Mojisu; //文字数(int型) double Shosu; //少数(double型) こんなイメージを持っています。 一応、意味のある変数名なので、jittaさんの要求は満たしているように思うのですが・・・。 ただ、これだと複数人で開発をする時など、変数がどの型なのか一々調べる必要がありますよね。 「調べる手間 < 変数の型変更などに伴う変数名との不整合による手間」という事でしょうか。 また、グローバル変数とローカル変数も、特に命名規則で区別しないのでしょうか。 (経験上、これは影響が大きいかな、と思いまして。使わなければいい話ではありますが。) 無知識で大変恐縮ですが、お教え頂けると幸いです。 |