我讀了以下問題(我會解決這個問題的相同的方式給出答案):Passing derived type as argument to abstract class泛型方法和類型轉換
但爲什麼不能找到派生類中的value
屬性?即使我添加一個類型轉換是不可能的:
public abstract class baseClass
{
public abstract float function<T>(T a, T b) where T:baseClass;
}
public class derived: baseClass
{
public override float function<derived>(derived a, derived b)
{
// Here value is not found
return a.value + b.value;
}
public float value;
}
實例與類型轉換也沒有工作(和建議冗餘類型轉換所示):
public abstract class baseClass
{
public abstract float function<T>(T a, T b) where T:baseClass;
}
public class derived: baseClass
{
public override float function<derived>(derived a, derived b)
{
// Here value is not found even with type cast
return ((derived)a).value + ((derived)b).value;
}
public float value;
}
實例與類型轉換工作 - 它的命名問題。將泛型類型參數重命名爲'T',然後可以轉換爲'derived'。 – 2kay
@ 2kay感謝提示 –