木曜日, 5月 22, 2008
[C#]構造体
▼質問
構造体(struct)で作成した変数を関数に渡してその中身をその関数の中で取得して
データを取得したいんだけど・・・うまく値がセットされないんだ!?
どうしてだい?
▼回答
C#のstructは、C/C++のstructとは違うものなんだ。
C#での構造体は、値型でクラスは、参照型なんだ。
値型とは、情報を引き渡すときに情報をコピーする方式のデータ型である。
参照型とは、データの実体がある場所を保存しておき、情報を引き渡す必要がある場合は、
データの本体をコピーせず、データの場所だけを伝えるという方式である。
構造体で参照渡しをしたい時は、関数の引数と呼び出し側の引数に「ref」を付けるんだ。
public struct ユーザ定義名
{
public int num;
public string name;
}
public void Test( ref ユーザ定義名 user )
{
user.num = 1;
user.name = "テスト";
}
ユーザ定義名 getUser;
Test( ref getUser );
■参考サイト
@IT:連載 改訂版 C#入門 第5章 C#のデータ型
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_005/cs2_005_03.html
青島のしま~Blue Islands~ : .NET Tips
http://www.takebay.net/~daigo-ao/paddlewiki.pl/title_2E4E45542054697073.html
構造体(struct)で作成した変数を関数に渡してその中身をその関数の中で取得して
データを取得したいんだけど・・・うまく値がセットされないんだ!?
どうしてだい?
▼回答
C#のstructは、C/C++のstructとは違うものなんだ。
C#での構造体は、値型でクラスは、参照型なんだ。
値型とは、情報を引き渡すときに情報をコピーする方式のデータ型である。
参照型とは、データの実体がある場所を保存しておき、情報を引き渡す必要がある場合は、
データの本体をコピーせず、データの場所だけを伝えるという方式である。
構造体で参照渡しをしたい時は、関数の引数と呼び出し側の引数に「ref」を付けるんだ。
public struct ユーザ定義名
{
public int num;
public string name;
}
public void Test( ref ユーザ定義名 user )
{
user.num = 1;
user.name = "テスト";
}
ユーザ定義名 getUser;
Test( ref getUser );
■参考サイト
@IT:連載 改訂版 C#入門 第5章 C#のデータ型
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_005/cs2_005_03.html
青島のしま~Blue Islands~ : .NET Tips
http://www.takebay.net/~daigo-ao/paddlewiki.pl/title_2E4E45542054697073.html