イヌのように鳴き,ネコのようにも鳴く,キミはだあれ?
ドキドキクイズ第2弾.今回は CLR クイズ.難易度は専門解説書程度ですが,非常に悪質です.
次のような interface IDog, ICat が定義されているとします.
public interface IDog { string Bark(); } public interface ICat { string Bark(); }
また,以下のようなメソッドが定義されているとします.
static public void Test(object o) { Type t = o.GetType(); Console.WriteLine("o is IDog : {0}", o is IDog); Console.WriteLine("o is ICat : {0}", o is ICat); Console.WriteLine("typeof(IDog).IsAssignableFrom(o.GetType()) : {0}", typeof(IDog).IsAssignableFrom(t)); Console.WriteLine("typeof(ICat).IsAssignableFrom(o.GetType()) : {0}", typeof(ICat).IsAssignableFrom(t)); Console.WriteLine("(o as IDog).Bark() : {0}", (o as IDog).Bark()); Console.WriteLine("(o as ICat).Bark() : {0}", (o as ICat).Bark()); }
あるオブジェクトを引数としてこのメソッドを呼び出すと,以下のように出力されました.このようなオブジェクトを作りなさい.
o is IDog : True o is ICat : True typeof(IDog).IsAssignableFrom(o.GetType()) : False typeof(ICat).IsAssignableFrom(o.GetType()) : False (o as IDog).Bark() : Barked as IDog (o as ICat).Bark() : Barked as ICat