- 締切済み
構造 他のクラスの構造体を別のクラスで使いたい。
C#で以下のようにCls1で定義している構造体をCls2の引数に使いたいのですが 定義されていないエラーになります。 Cls2で再定義すると、同じものが2つできて修正するときに困りそうです。 プログラムの構造について、何か良い方法がありましたら教えてください。 namespace A { class Cls1 { public struct Kumi { public string name; public int age; } private test(){ Kumi k; k.name = "太郎"; k.age = 5; Cls2 c2 = new Cls2(); c2.Write(k); } } } 別のクラスファイル namespace A { class Cls2 { public Write(Kumi k){ } } }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
まったく独立したクラスならCls2の定義を public void Write(Cls1.Kumi k) { } といった具合にする方向かと ・・・ クラスの独立性を損ないそうですが または Cls2を Cls1の継承したクラスにしてしまえば public void Write(Kumi k) { } と記述も可能ですよ
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
namespace A { class Cls1 { public struct Kumi { public string name; public int age; } private void test() { Kumi k; k.name = "太郎"; k.age = 5; Cls2 c2 = new Cls2(); c2.Write(k); } public static void Main() { Cls1 c = new Cls1(); c.test(); } } } namespace A { class Cls2 { public void Write(Cls1.Kumi k){ System.Console.WriteLine("{0} {1}", k.name, k.age); } } }
- Gab_km
- ベストアンサー率40% (20/50)
> C#で以下のようにCls1で定義している構造体をCls2の引数に使いたいのですが > 定義されていないエラーになります。 それでは、クラス外に定義されることをお勧めします。 クラス1とクラス2の両方で利用したいのであれば、この構造体もそれらのクラスと同格に(つまりいずれかのクラス内に定義したりせずに)定義してみてください。