C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

変数の受け渡し


(過去ログ 6 を表示中)

[トピック内 20 記事 (1 - 20 表示)]  << 0 >>

■6497 / inTopicNo.1)  変数の受け渡し
  
□投稿者/ chite 二等兵(1回)-(2006/09/14(Thu) 03:56:14)

分類:[C#] 


分類:[C#] 

Form1の変数をForm2またはForm3から参照、受け取る方法が解かりません。
とんでもなく初歩的な質問だと思いますが、すいません教えてください。
逆にForm2の変数をForm1に送る方法もお願いします。
visual Studio2005 を使ってます。

0
引用返信 編集キー/
■6500 / inTopicNo.2)  Re[1]: 変数の受け渡し
□投稿者/ επιστημη 曹長(99回)-(2006/09/14(Thu) 09:24:09)

分類:[C#] 

> Form1の変数をForm2またはForm3から参照、受け取る方法が解かりません。

いろんなワザがありましょうが、おちゃらかに済ますならたとえば:

public partial class Form2 : Form {
private string value_;
public string UserInput {
get { return value_; } // あげる
set { value_ = value; textBox1.Text = value_; } // もらう
}

// "おっけー"ボタン
private void button1_Click(object sender, EventArgs e) {
value_ = textBox1.Text;
DialogResult = DialogResult.OK;
this.Close();
}
}


public partial class Form1 : Form {
// "Form2出てこい"ボタン
private void button1_Click(object sender, EventArgs e) {
Form2 dialog = new Form2();
dialog.UserInput = textBox1.Text; // あげる
if ( dialog.ShowDialog() == DialogResult.OK ) {
label1.Text = dialog.UserInput; // もらう
}
}
}


0
引用返信 編集キー/
■6502 / inTopicNo.3)  Re[1]: 変数の受け渡し
□投稿者/ trapemiya 曹長(83回)-(2006/09/14(Thu) 11:54:21)
trapemiya さんの Web サイト

分類:[C#] 

Form1もForm2もForm3もクラスです。クラス間で値を渡すにはどうすれば良いでしょう?

値取得先クラスで、値取得元クラスのインスタンスへの参照を得ている(つまり値を取得しようとしているクラスから、値取得元クラスを見に行ける)状態で、値取得元クラスにおいて、その値を取得したい変数が、public宣言されているとか、プロパティで公開されていれば、その値を得ることができます。

では値取得先クラスで、値取得元クラスのインスタンスへの参照をどうやって得るのか?
それは、値取得元クラスから値取得先クラスをインスタンス化する際に(つまり、フォームを開く際に)、そのコンストラクタの引数に自分自身のインスタンス(this)を渡してあげます。

以上が基本です。上の説明では値取得と書きましたが、逆に値セットも全く同様です。要は、相手のクラスの参照を得ていて(インターネットに例えればサイトのURLがわかっていて)、かつ、そのクラスの変数が外部から操作可能(インターネットに例えれば、そのサイトで操作権限あり)であれば良いわけです。

#久々にメタファ使ったw

0
引用返信 編集キー/
■6505 / inTopicNo.4)  Re[2]: 変数の受け渡し
□投稿者/ はいこーん 准尉(117回)-(2006/09/14(Thu) 13:11:26)

分類:[C#] 

まあ、Form自体を渡すことは通常ないです。
Formのインスタンスそのものを渡すのではなく、参照したいものだけを渡すべきですね。
呼び出し先が呼び出し元のインスタンスを持つのは構造上あまり良いとは言えません。

0
引用返信 編集キー/
■6508 / inTopicNo.5)  Re[2]: 変数の受け渡し
□投稿者/ chite 二等兵(2回)-(2006/09/14(Thu) 14:50:44)

分類:[C#] 

No6502に返信(trapemiyaさんの記事)
> Form1もForm2もForm3もクラスです。クラス間で値を渡すにはどうすれば良いでしょう?


丁寧にありがとうございました。クラスとかインスタンスが理解できてないらしく
なかなか難しそうですが今から頑張ってみます。ありがとうございました。

0
引用返信 編集キー/
■6509 / inTopicNo.6)  Re[3]: 変数の受け渡し
□投稿者/ chite 二等兵(3回)-(2006/09/14(Thu) 14:57:40)

分類:[C#] 

No6505に返信(はいこーんさんの記事)
> まあ、Form自体を渡すことは通常ないです。
> Formのインスタンスそのものを渡すのではなく、参照したいものだけを渡すべきですね。
> 呼び出し先が呼び出し元のインスタンスを持つのは構造上あまり良いとは言えません。

はいこーんさん、書き込みありがとうございます。

6500番の方法よりシンプルな方法というか良い方法があるということでしょうか?
私の読解レベルが低いようですいません。参照したいものだけを渡す方法教えてください。
もしかして的外れな質問かもしれませんが、ご容赦ください。

0
引用返信 編集キー/
■6510 / inTopicNo.7)  Re[4]: 変数の受け渡し
□投稿者/ Blue 軍曹(74回)-(2006/09/14(Thu) 15:18:08)

分類:[C#] 

No6509に返信(chiteさんの記事)
> 6500番の方法よりシンプルな方法というか良い方法があるということでしょうか?
というか、6500番よりわかりやすくシンプルなのは無いでしょう。
ただ、publicメンバ変数を使わないでプロパティを使っているから若干難しいように思えるだけです。


受け渡すデータが多い場合、ある程度構造体かなんかにしてまとめてしまうのもありでしょうな。


0
引用返信 編集キー/
■6511 / inTopicNo.8)  Re[4]: 変数の受け渡し
□投稿者/ επιστημη 准尉(102回)-(2006/09/14(Thu) 15:32:42)

分類:[C#] 

No6509に返信(chiteさんの記事)
> 6500番の方法よりシンプルな方法というか良い方法があるということでしょうか?

グローバル変数こしらえてお互いが読み書きするのがシンプルっちゃーシンプルです。
# そんなコード書く奴はタコ殴りにしますけど


0
引用返信 編集キー/
■6514 / inTopicNo.9)  Re[5]: 変数の受け渡し
□投稿者/ chite 二等兵(4回)-(2006/09/14(Thu) 16:42:47)

分類:[C#] 

No6511に返信(επιστημηさんの記事)
> ■No6509に返信(chiteさんの記事)

επιστημη さんありがとうぎざいます。

> グローバル変数こしらえてお互いが読み書きするのがシンプルっちゃーシンプルです。

> # そんなコード書く奴はタコ殴りにしますけど
>

定数の変数はグローバル変数にして、それぞれのformから読めば便利そうですけど、
きっとオブジェクト指向ということでこれもタコなんでしょうかねぇ。

Flashのjavascriptのように 必要変数値 = _parent.変数名;
必要変数値 = インスタンス名.変数名;

こんな風に簡単に書けると良いんだけど、、理解できるまでなかなか、道のりが長そうです。

0
引用返信 編集キー/
■6515 / inTopicNo.10)  Re[6]: 変数の受け渡し
□投稿者/ επιστημη 准尉(103回)-(2006/09/14(Thu) 16:53:09)

分類:[C#] 

No6514に返信(chiteさんの記事)
> 定数の変数はグローバル変数にして、それぞれのformから読めば便利そうですけど、
> きっとオブジェクト指向ということでこれもタコなんでしょうかねぇ。

グローバル変数 と パブリックメンバ とを混同してませんよ、ね?


0
引用返信 編集キー/
■6526 / inTopicNo.11)  Re[5]: 変数の受け渡し
□投稿者/ chite 二等兵(5回)-(2006/09/14(Thu) 19:29:25)

分類:[C#] 

No6510に返信(Blueさんの記事)
> ■No6509に返信(chiteさんの記事)
>>6500番の方法よりシンプルな方法というか良い方法があるということでしょうか?
> というか、6500番よりわかりやすくシンプルなのは無いでしょう。
> ただ、publicメンバ変数を使わないでプロパティを使っているから若干難しいように思えるだけです。
>
>
> 受け渡すデータが多い場合、ある程度構造体かなんかにしてまとめてしまうのもありでしょうな。

ありがとうございます、まずはじっくりと軍曹さんの方法で勉強してみます。

0
引用返信 編集キー/
■6527 / inTopicNo.12)  Re[7]: 変数の受け渡し
□投稿者/ chite 二等兵(6回)-(2006/09/14(Thu) 19:32:06)

分類:[C#] 

No6515に返信(επιστημηさんの記事)

> グローバル変数 と パブリックメンバ とを混同してませんよ、ね?
>

度々すいません。パブリックメンバとグローバル変数の違いも解かってない
ようですのでもう一度勉強しなおしてみます。またよろしくお願いします。

0
引用返信 編集キー/
■6531 / inTopicNo.13)  Re[3]: 変数の受け渡し
□投稿者/ R・田中一郎 二等兵(7回)-(2006/09/14(Thu) 22:56:54)
R・田中一郎 さんの Web サイト

分類:[C#] 

オブジェクト指向について勉強するのが良いかもしれませんね。
わかりやすく解説してあるホームページも多いので、一度読んでみると良いですよ。

0
引用返信 編集キー/
■6535 / inTopicNo.14)  Re[4]: 変数の受け渡し
□投稿者/ chite 二等兵(7回)-(2006/09/15(Fri) 01:12:23)

分類:[C#] 

No6531に返信(R・田中一郎さんの記事)
> オブジェクト指向について勉強するのが良いかもしれませんね。
> わかりやすく解説してあるホームページも多いので、一度読んでみると良いですよ。

田中さん、、皆さん丁寧にありがとうございました。
基礎から勉強し直してきますので、またよろしくお願いします。

0
引用返信 編集キー/
■6536 / inTopicNo.15)  Re[5]: 変数の受け渡し
□投稿者/ ガッ 二等兵(2回)-(2006/09/15(Fri) 01:58:46)

分類:[C#] 

VB.NETに「グローバル変数」って呼ばれるのがあったかな?
と思ったので:
http://www.microsoft.com/japan/msdn/net/vbnetref/vbnetref3-1.aspx

そもそも「グローバル変数」とは?
と思って:
http://e-words.jp/w/E382B0E383ADE383BCE38390E383ABE5A489E695B0.html

「グローバル変数」という名前で呼ばれるモノは無いけれど、
"プログラム中のいかなるスコープからでもアクセスできる変数"というのは
たとえばVB.NETでpublicなメンバとして宣言した変数であったりするので、
意味から類推すればアリと言えるのかな…??

すみません纏まりませんでした(orz

0
引用返信 編集キー/
■6537 / inTopicNo.16)  Re[6]: 変数の受け渡し
□投稿者/ επιστημη 准尉(104回)-(2006/09/15(Fri) 09:33:28)

分類:[C#] 

C#にはグローバル変数がないのだけれども、たとえば:

namespace Hoge {
static class Program {
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread] static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

public static Global globalValue = new Global(); // [*]

}
}

[*] とかやっとけば、アプリ・コードのどっからでも
Program.globalValue で参照できるので"実質"グローバル変数となります。
# 乱用しちゃダメよ。 タコ殴りよっ。


0
引用返信 編集キー/
■6538 / inTopicNo.17)  Re[3]: 変数の受け渡し
□投稿者/ trapemiya 曹長(85回)-(2006/09/15(Fri) 09:52:05)
trapemiya さんの Web サイト

分類:[C#] 

No6505に返信(はいこーんさんの記事)
> まあ、Form自体を渡すことは通常ないです。
> Formのインスタンスそのものを渡すのではなく、参照したいものだけを渡すべきですね。
> 呼び出し先が呼び出し元のインスタンスを持つのは構造上あまり良いとは言えません。

いろいろ考えてみたんですが、私はちょっと違う意見だなぁ。例えばOwnerプロパティなんていうのもあるし、呼び出し元に折角プロパティとかを用意しても、呼び出し先で呼び出し元の参照を得てなければ使えないし。そのプロパティをstaticで定義する例も世の中にはあるけど、あんまり乱用したくないですしね。タコ殴りされてもやだし(^^;
何か見落としてるかな?

0
引用返信 編集キー/
■6541 / inTopicNo.18)  Re[4]: 変数の受け渡し
□投稿者/ まどか 大佐(228回)-(2006/09/15(Fri) 11:25:17)

分類:[C#] 

> いろいろ考えてみたんですが、私はちょっと違う意見だなぁ。例えばOwnerプロパティなんていうのもあるし、

「Form」ということでは基本的にはいこーんさんと同感です。
OwnerのようにFrameworkで用意されているものは積極的に使いますが、
自前で用意する際は抽象化したプロパティやクラスインスタンスなどを作ったほうがよいと考えています。


0
引用返信 編集キー/
■6542 / inTopicNo.19)  Re[5]: 変数の受け渡し
□投稿者/ trapemiya 曹長(86回)-(2006/09/15(Fri) 11:40:31)
trapemiya さんの Web サイト

分類:[C#] 

No6541に返信(まどかさんの記事)
> 自前で用意する際は抽象化したプロパティやクラスインスタンスなどを作ったほうがよいと考えています。

抽象化したプロパティやクラスインスタンスとはどうのような意味で言われているのでしょうか? また、なぜその方がよいとお考えなのでしょうか?
すみませんが、もう少しお話を聞かせてもらえませんでしょうか?

0
引用返信 編集キー/
■6544 / inTopicNo.20)  Re[6]: 変数の受け渡し
 
□投稿者/ まどか 大佐(229回)-(2006/09/15(Fri) 12:08:35)

分類:[C#] 

> 抽象化したプロパティやクラスインスタンスとはどうのような意味で言われているのでしょうか?

真意は「Form」のインスタンスを使いまわしたくないということで
ならばおのずと、必要なプロパティやその集合を管理フォームへ実装するということになるという意味です。
はいこーんさんの「参照したいものだけを渡すべきですね。」を違う言い方をしただけです。

確かにフォームもクラスですが、インスタンスを渡すのはちょっと抵抗があります。
循環参照も起こらないようになっているようですし、そうしてもいいとは思いますけど。。。
#クラスだと言われればそれまでで、あくまでそういうレベルの話かなとも思います。

0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -