これは木曜日の理論です。継承された抽象のクラスメンバーへのインスタンスへのアクセス
Main()は_XLocalにアクセスできません。& _YLocal?ここで
using System;
namespace HelloGoodbyeOperator {
public abstract class HGOperator {
public string _greeting { get; set; }
public bool _x { get; internal set; }
public bool _y { get; internal set; }
public static implicit operator HGOperator(bool mode) {
object ret = new object();
if (mode)
ret = new HGOperator_Hello { _greeting = "hello", _XLocal = 10 };
else
ret = new HGOperator_Goodbye { _greeting = "goodbye", _YLocal = 20 };
return (HGOperator)ret;
}
}
public class HGOperator_Hello : HGOperator {
public int _XLocal { get; set; }
public HGOperator_Hello() { _x = true; Console.WriteLine("HGOperator_Hello //" + _XLocal.ToString() + "\\\\"); }
}
public class HGOperator_Goodbye : HGOperator {
public int _YLocal { get; set; }
public HGOperator_Goodbye() { _y = false; Console.WriteLine("HGOperator_Goodbye //", _YLocal, "\\\\"); }
}
class Program {
static void Main(string[] args) {
HGOperator hg = true;
Console.WriteLine(hg._greeting);
test(hg);
Console.WriteLine("");
hg = false;
Console.WriteLine(hg._greeting);
test(hg);
Console.ReadKey();
}
static void test(HGOperator hg) {
if (hg is HGOperator_Hello) {
Console.WriteLine(hg._x);
//Console.WriteLine(hg._XLocal);
} else {
Console.WriteLine(hg._y);
//Console.WriteLine(hg._YLocal);
}
}
}
}
は出力
HGOperator_Hello // 0 \
ハロー
真
HGOperator_Goodbye //
別れ
です偽
私はHGOperator_Helloタイプのhg._YLocalにアクセスしようとすると、悪夢&その逆になるかを理解することができます。しかし、まだ私はそれぞれのメンバーに慎重に行くことができると思うだろう。
また、私はこれが本当のことだと思います。 2つのコンストラクターは、Console.Writeline()で_XLocalの値を持たない& _YLocalです。 .ToString()がなければ ""だけが表示されます。何故なの?おかげさまで
ここで、「メイン」は?質問は何ですか? –
@GlennFerrieどこにいるのですか?笑。 'クラスプログラム{ static void Main(文字列[] args){' – Steve