using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication12
{
public class Foo
{
public virtual bool DoSomething() { return false; }
}
public class Bar : Foo
{
public override bool DoSomething() { return true; }
}
public class Test
{
public static void Main()
{
Bar test = new Foo();
Console.WriteLine(test.DoSomething());
}
}
}
エラーメッセージ:暗黙的に「ConsoleApplication12.Bar」にタイプ「ConsoleApplication12.Foo」を変換できませんは、基本クラスのオブジェクトを参照するために、派生クラスの変数を作成
エラーCS0266。明示的な変換は、(あなたがキャストが欠けている?)が存在しConsoleApplication12 C:「派生クラスの変数を作成すると思われるプロジェクト\ ConsoleApplication12 \ ConsoleApplication12 \ Program.csの\ Visual Studioの2015 \ \ Users \ユーザーchliuの\ドキュメント
基底クラスでオブジェクトを参照する "ことはできません。どうして?
、これは一つの方法は問題なく動作し、他の方法は、キャストを必要とする理由の直感的な説明のために意気消沈-と-アップキャストhttp://stackoverflow.com/questions/1524197/downcast-and-upcast – pix