私はベースのクラスScenBaseと派生クラスScenCを持っています。私はクラスHexCを基底クラスのHexから導出しました。私は基本クラスUnitから派生したクラスUnitCも持っています。私はHexCの配列を指すように六角の配列を設定することができますが、コンパイラは私がUnitCのリストを指すようにユニットのリストを設定できません。ここでC#:<T>のリスト= of <Tから派生>はコンパイルされません
// The Core Database for the game scenario.
// Theoretically multiple secenarios can be loaded
// into memory at the same time.
[Serializable]
public class ScenC : ScenBase
{
public bool playable { get; set; }
public HexC[,] hexCs { get; private set; }
public List<UnitC> unitCs { get; private set; }
// A database for every user and AI entity.
public List<ScenV> chViews { get; private set; }
public List<string> characters { get; private set; }
public ScenC(int xDimI, int yDimI) : base (xDimI, yDimI)
{
playable = false;
chViews = new List<ScenV>();
characters = new List<string>();
characters.Add("Supreme");
hexCs = new HexC[xDim, yDim];
hexs = hexCs; //this line complies fine
newHex = (int x, int y) => new HexC(this, x, y);
unitCs = new List<UnitC>();
// **This line won't compile**
unitCs = units;
Init();
}
}
はのためのフィールドのプロパティがあります基底クラスScenBase:それは暗黙のキャストルール「である」が、私はこれが不可能である配列
C#ではクラスの共分散はサポートされていません。コレクションでは型保証もされていません。 – CodesInChaos