- 題名: クラスの中の共通の型の宣言の仕方
- 日時: 2010/01/04 4:43:19
- ID: 26172
- この記事の返信元:
- (なし)
- この記事への返信:
- [26173] Re[1]: クラスの中の共通の型の宣言の仕方2010/01/04 6:10:25
- ツリーを表示
■No26172に返信(たなかさんの記事) > クラス clsTest1とクラス clsTest1_5の中でclsTest2を使いたいと思っています。 > そのクラスのthisをclsTest2の中の引数で渡す時に型の設定をしないといけないと > 思いますが > clsTest1とclsTest1_5の両方の名前を宣言しないといけないのでしょうか? > clsTest1とclsTest1_5の共通で使える型や宣言はありませんか? > > よろしくお願いします。 > > C# NET Framework3.5 > > using System; > using System.Collections.Generic; > using System.Linq; > using System.Text; > > class clsTest1 { > > clsTest2 clsTest2; > > public clsTest1() { > // clsTest2 = new clsTest2(this); > } > > } > > using System; > using System.Collections.Generic; > using System.Linq; > using System.Text; > > class clsTest1_5 { > > clsTest2 clsTest2; > > public clsTest1_5() { > clsTest2 = new clsTest2(this); > } > > } > > using System; > using System.Collections.Generic; > using System.Linq; > using System.Text; > > class clsTest2 { > > clsTest1_5 tes; > > public clsTest2(clsTest1_5 a) { > tes = a; > } > > } > 文章がわかりにくいですが、整理すると 1. clsTest1 と clsTest1_5 の両方で clsTest2 を使用している。 2. clsTest1 と clsTest1_5 のコンストラクタでは clsTest2 のコンストラクタにそれぞれ自分自身のクラスを渡している。 3. clsTest2 に clsTest1 と clsTest1_5 を引数として取るコンストラクタを書かなくてはいけないのか? 共通で使える宣言などはないのか? ということでしょうか。 現在のコードでは clsTest1 と clsTest1_5 はそれぞれ独立したクラスなので、両方の引数をとるコンストラクタを 用意しなくてはいけないと思います。 共通性を持たせるならば clsTest1 と clsTest1_5 の上位にインターフェースなどを用意して、clsTest2 ではその インターフェースクラスを宣言するという方法もあるかと思います。 たとえばこんな感じ。 class clsTest0 { } class clsTest1 : clsTest0 { clsTest2 clsTest2; public clsTest1() { clsTest2 = new clsTest2(this); } } class clsTest1_5 : clsTest0 { clsTest2 clsTest2; public clsTest1_5() { clsTest2 = new clsTest2(this); } } class clsTest2 { clsTest0 tes; public clsTest2(clsTest0 a) { tes = a; } } ただ、目的がよくわからないので、自分としては clsTest1 と clsTest1_5 を引数に持つコンストラクタ を両方持つ方が良いと思います。
分類:[.NET]
クラス clsTest1とクラス clsTest1_5の中でclsTest2を使いたいと思っています。
そのクラスのthisをclsTest2の中の引数で渡す時に型の設定をしないといけないと
思いますが
clsTest1とclsTest1_5の両方の名前を宣言しないといけないのでしょうか?
clsTest1とclsTest1_5の共通で使える型や宣言はありませんか?
よろしくお願いします。
C# NET Framework3.5
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class clsTest1 {
clsTest2 clsTest2;
public clsTest1() {
// clsTest2 = new clsTest2(this);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class clsTest1_5 {
clsTest2 clsTest2;
public clsTest1_5() {
clsTest2 = new clsTest2(this);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class clsTest2 {
clsTest1_5 tes;
public clsTest2(clsTest1_5 a) {
tes = a;
}
}