キャストでこのシナリオを理解するのに苦労しています。C#の基底クラスへの派生クラスのアップキャスト
class Program
{
static void Main()
{
IFoo iFoo = GetIFoo();
Foo foo = (Foo)iFoo;
//the GetType ext method is executed and it returns Bar
if(foo is Foo)
Console.WriteLine($"foo is of type: {foo.GetType()}");
Console.ReadLine();
}
static IFoo GetIFoo()
{
var bar = new Bar
{
Name = "MyName",
Surname = "MySurname"
}
return bar;
}
}
質問です:私はバーを作成していていても、私はIFooを返す静的メソッドを作成し、私の主な方法で、
public interface IFoo {}
public class Foo : IFoo
{
public string Name { get; set; }
}
public class Bar : Foo
{
public string Surname { get; set; }
}
今:デモ目的のために は、私はこれらのクラスを作成しましたGetIFooメソッドでIFooをFooにキャストしようとすると、fooのタイプはBarでFooではないのはなぜですか?
実行時に動的タイプのBarをFooにキャストすることは可能ですか? – allencage
ありがとう、私は私のコメントに対する答えを見つけました。これはまさに私が理解しようとしていたものです。 – allencage