DOBON.NET DOBON.NETプログラミング掲示板過去ログ

C# 構造体について

環境/言語:[環境( XP ) 使用言語( C# )]
分類:[.NET]

はじめまして
つい最近からC#を始めた初心者です。

構造体について教えて下さい。

Class1の中に構造体Studentを記述していて
最初にForm1のButton Clickで名前を入れています。
次にForm2も同様にButton Clickで名前を入れています。
この時、Form2側のButton Clickで名前を入れる前にデバッガでみると
test.strNameはnullになっています。
Form1で入れた名前を覚えておくにはどう記述すれば良いのでしょうか?


public struct Student
{
 public string strName;
}

ここからForm1
Class1.Student test;
private void button1_Click(object sender, System.EventArgs e)
{
test.strName="太郎";
}

ここからForm2
Class1.Student test;
private void button1_Click(object sender, System.EventArgs e)
{
test.strName="次郎";
}
Form1およびForm2の構造体は名前は同じでもそれぞれのForm内でprivateに定義されているもの
にすぎません。(まったく別のものです)
同じ構造体を触りにいきたい場合は、それぞれのフォームが見える場所に定義しましょう。
  • 題名: Re[2]: C# 構造体について
  • 著者: minako
  • 日時: 2004/03/09 17:31:18
  • ID: 2946
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
Sugi@ぱぱんぶぃびぃさん返信ありがとうございます。

> 同じ構造体を触りにいきたい場合は、それぞれのフォームが見える場所に定義しましょう。

何処へ定義すれば見えるようになるんでしょうか?
勉強不足で申し訳ありませんがよろしくお願いします。
■No2940に返信(minakoさんの記事)
> はじめまして
> つい最近からC#を始めた初心者です。
>
> 構造体について教えて下さい。
>
> Class1の中に構造体Studentを記述していて
> 最初にForm1のButton Clickで名前を入れています。
> 次にForm2も同様にButton Clickで名前を入れています。
> この時、Form2側のButton Clickで名前を入れる前にデバッガでみると
> test.strNameはnullになっています。
> Form1で入れた名前を覚えておくにはどう記述すれば良いのでしょうか?
>
>
> public struct Student
> {
>  public string strName;
> }
>
> ここからForm1
> Class1.Student test;
> private void button1_Click(object sender, System.EventArgs e)
> {
> test.strName="太郎";
> }
>
> ここからForm2
> Class1.Student test;
> private void button1_Click(object sender, System.EventArgs e)
> {
> test.strName="次郎";
> }
>

Form1クラスで作ったStudent構造体オブジェクトと、Form2で作ったそれはまったく違うオブジェクトです、型と変数名が同じでも違うものです。

public class Form1
{
public Student test;

public struct Student
{
public string strName;
}

//このクラス内でアクセスする場合には、thisでアクセスする。
}

public class Form2
{
//このクラス内からアクセスする場合には、Form1オブジェクトからアクセスする
}
りょうさんありがとうございます。

> public class Form1
> {
> public Student test;
>
> public struct Student
> {
> public string strName;
> }
>
> //このクラス内でアクセスする場合には、thisでアクセスする。
> }
>
> public class Form2
> {
> //このクラス内からアクセスする場合には、Form1オブジェクトからアクセスする
> }

Form1内はthisでアクセスできましたがForm2からがどうやってもできません。
お手数ですがもう少し詳しく教えて貰えませんでしょうか?
■No2950に返信(minakoさんの記事)
> りょうさんありがとうございます。
>
>>public class Form1
>>{
>> public Student test;
>>
>> public struct Student
>> {
>> public string strName;
>> }
>>
>> //このクラス内でアクセスする場合には、thisでアクセスする。
>>}
>>
>>public class Form2
>>{
>> //このクラス内からアクセスする場合には、Form1オブジェクトからアクセスする
>>}
>
> Form1内はthisでアクセスできましたがForm2からがどうやってもできません。
> お手数ですがもう少し詳しく教えて貰えませんでしょうか?

Form1とForm2の関係がわからないとだめですね。

> Form1とForm2の関係がわからないとだめですね。
Form1にButton2を配置してButton2のclickでForm2を呼んでます。

Form2 f = new Form2();
f.Show();
■No2953に返信(minakoさんの記事)
>
>>Form1とForm2の関係がわからないとだめですね。
> Form1にButton2を配置してButton2のclickでForm2を呼んでます。
>
> Form2 f = new Form2();
> f.Show();
>
>


Form1にプロパティを設定して、自身のオブジェクトを読み出せるようにして、それをForm2から読めばいいんじゃないですか?
返事が遅れてすいません。

りょうさんの言われて通りForm1にプロパティを設定して、自身のオブジェクトを読み出せるようにして、それをForm2から読んでみました。

結果はOKでした。
今度はこの構造体を配列にしたいのですが、どうすればいいのでしょうか?
■No2961に返信(minakoさんの記事)
> 返事が遅れてすいません。
>
> りょうさんの言われて通りForm1にプロパティを設定して、自身のオブジェクトを読み出せるようにして、それをForm2から読んでみました。
>
> 結果はOKでした。
> 今度はこの構造体を配列にしたいのですが、どうすればいいのでしょうか?

構造体を配列で宣言して、プロパティの型をStudent[]に変えればいいのではないのかと。
ありがとうございます。

> 構造体を配列で宣言して、プロパティの型をStudent[]に変えればいいのではないのかと。

上記の内容で出来ました。
長い間付き合って貰って有難うございました。
また何かありましたらよろしくお願いします。
解決済み!
  • 題名: Re[9]: C# 構造体について
  • 著者: りょう
  • 日時: 2004/03/10 18:39:25
  • ID: 2967
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No2964に返信(minakoさんの記事)
> ありがとうございます。
>
>>構造体を配列で宣言して、プロパティの型をStudent[]に変えればいいのではないのかと。
>
> 上記の内容で出来ました。
> 長い間付き合って貰って有難うございました。
> また何かありましたらよろしくお願いします。

どういたしまして。

DOBON.NET | プログラミング道 | プログラミング掲示板