アプリ版:「スタンプのみでお礼する」機能のリリースについて

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){

}
}

}

A 回答 (3件)

まったく独立したクラスならCls2の定義を



public void Write(Cls1.Kumi k)
{

}
といった具合にする方向かと ・・・ クラスの独立性を損ないそうですが

または Cls2を Cls1の継承したクラスにしてしまえば
public void Write(Kumi k)
{

}
と記述も可能ですよ
    • good
    • 0

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);
}
}
}
    • good
    • 0

> C#で以下のようにCls1で定義している構造体をCls2の引数に使いたいのですが


> 定義されていないエラーになります。
それでは、クラス外に定義されることをお勧めします。
クラス1とクラス2の両方で利用したいのであれば、この構造体もそれらのクラスと同格に(つまりいずれかのクラス内に定義したりせずに)定義してみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A