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

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

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

Re[2]: 構造体のフォーム間の引渡し


(過去ログ 19 を表示中)

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

■7475 / inTopicNo.1)  構造体のフォーム間の引渡し
  
□投稿者/ なす (1回)-(2007/09/06(Thu) 14:19:13)

分類:[C#] 

よろしくお願いします。visualstudio2005,c#を使っております。

表題の件について、下記のようなソースを書いてみました。

Form1

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public int int_test2;
//構造体の設定
private struct st {

public int int_test;
}
private void Form1_Load(object sender, EventArgs e)
{
Form2 fm2 = new Form2();
fm2.ShowDialog();
}
public int getAAA()
{
st sample;
sample.int_test = 5;
int_test2 = sample.int_test;
return int_test2;
}
}

Form2

public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
Form1 fm1 = new Form1();
int int_test3 = fm1.getAAA();

System.Diagnostics.Debug.WriteLine(int_test3);
System.Diagnostics.Debug.WriteLine(fm1.int_test2);

}
}
どちらも5が出力されますが、これでは構造体を用いる意味が無いような気がするのですが、
(例えばメンバ変数を用意していることとか)
表題の場合、どのような渡し方が模範的なのでしょうか?検索しても良い解決法が
浮かばなかったので、恐れ入りますがよろしくお願いします。
引用返信 編集キー/
■7477 / inTopicNo.2)  Re[1]: 構造体のフォーム間の引渡し
□投稿者/ HiJun (69回)-(2007/09/06(Thu) 14:30:29)
私なら、ReadWrite兼用のプロパティをおこします。

引用返信 編集キー/
■7479 / inTopicNo.3)  Re[2]: 構造体のフォーム間の引渡し
□投稿者/ Hongliang (189回)-(2007/09/06(Thu) 15:50:41)
Hongliang さんの Web サイト
構造体の引渡しと言う割りに、実際に渡っているのは int のようですけど?
// いやまあ int も構造体ではありますが。
しかも Form2 の方で Form1 を new しちゃってますし。
引用返信 編集キー/
■7483 / inTopicNo.4)  Re[3]: 構造体のフォーム間の引渡し
□投稿者/ なす (2回)-(2007/09/06(Thu) 17:01:40)


No7479 (Hongliang さん) に返信
> 構造体の引渡しと言う割りに、実際に渡っているのは int のようですけど?
> // いやまあ int も構造体ではありますが。
> しかも Form2 の方で Form1 を new しちゃってますし。
引用返信 編集キー/
■7484 / inTopicNo.5)  Re[4]: 構造体のフォーム間の引渡し
□投稿者/ なす (3回)-(2007/09/06(Thu) 17:06:41)
間違えて送信してしまいました、申し訳ないです。

>私なら、ReadWrite兼用のプロパティをおこします。

もしよろしければ実装方法をコードで教えていただけないでしょうか?

これについては、間違っているというパターンで意図的に書いてしまっています。
> ■No7479 (Hongliang さん) に返信
>>構造体の引渡しと言う割りに、実際に渡っているのは int のようですけど?
>>// いやまあ int も構造体ではありますが。
>>しかも Form2 の方で Form1 を new しちゃってますし。

一応、またコードを書いてみました。もう少しスマートになりそうな気がするのですが・・・

Form1

public partial class Form1 : Form
{


public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Form2 fm2 = new Form2();
fm2.a.i = 5;
fm2.ShowDialog();

}
}

Form2

public partial class Form2 : Form
{
public struct st
{
public int i;
}
public st test;

public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{

System.Diagnostics.Debug.WriteLine(test.i);

}
}
引用返信 編集キー/
■7510 / inTopicNo.6)  Re[1]: 構造体のフォーム間の引渡し
□投稿者/ Jitta on the way (3回)-(2007/09/07(Fri) 12:18:58)
No7475 (なす さん) に返信
> よろしくお願いします。visualstudio2005,c#を使っております。
>
> 表題の件について、下記のようなソースを書いてみました。
>
> Form1
>
> public partial class Form1 : Form
> {
> public Form1()
> {
> InitializeComponent();
> }
>
> public int int_test2;
> //構造体の設定
> private struct st {
>
> public int int_test;
> }
> private void Form1_Load(object sender, EventArgs e)
> {
> Form2 fm2 = new Form2();
> fm2.ShowDialog();
> }
> public int getAAA()
> {
> st sample;
> sample.int_test = 5;
> int_test2 = sample.int_test;
> return int_test2;
> }
> }
>
> Form2
>
> public Form2()
> {
> InitializeComponent();
> }
>
> private void Form2_Load(object sender, EventArgs e)
> {
> Form1 fm1 = new Form1();
> int int_test3 = fm1.getAAA();
>
> System.Diagnostics.Debug.WriteLine(int_test3);
> System.Diagnostics.Debug.WriteLine(fm1.int_test2);
>
> }
> }
> どちらも5が出力されますが、これでは構造体を用いる意味が無いような気がするのですが、
> (例えばメンバ変数を用意していることとか)
> 表題の場合、どのような渡し方が模範的なのでしょうか?検索しても良い解決法が
> 浮かばなかったので、恐れ入りますがよろしくお願いします。


構造体を用いる意味 って、なんですか?

演算してないから、どちらも5で正解じゃない?
引用返信 編集キー/
■7563 / inTopicNo.7)  Re[2]: 構造体のフォーム間の引渡し
□投稿者/ Jitta (419回)-(2007/09/08(Sat) 20:54:01)
ご参考: http://blogs.wankuma.com/jitta/articles/54305.aspx

構造体については、「値型 参照型 違い」で検索してみましょう。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -