-2
ClassA
{
int a;
public int aValue
{
get { return a; }
}
}
ClassB : ClassA
{
int b;
public int bValue
{
get { return b; }
}
}
ClassC : ClassA
{
int c;
public int cValue
{
get { return c; }
}
}
public void getObject(int i)
{
if(i==1)
{
ClassB objB = new ClassB();
objB.aValue = 20;
objB.bValue = 30;
Console.Writeline(objB.aValue);
Console.Writeline(objB.bValue);
}
else
{
ClassC objC = new ClassC();
objC.aValue = 20;
objC.cValue = 40;
Console.Writeline(objC.aValue);
Console.Writeline(objC.cValue);
}
}
相反,我想創建一個返回對象,使得通用方法:與返回類型爲對象的通用方法
public T getObject<T>(int i) where T : class
{
if(i==1)
{
ClassB objB = new ClassB();
return objB as T;
}
else
{
ClassC objC = new ClassC();
return objC as T;
}
}
public static void main()
{
Object obj = getObject<Object>(5);
obj.aValue = 20;
obj.bValue = 30;
obj.cValue = 40;
Console.Writeline(obj.aValue);
Console.Writeline(obj.bValue);
Console.Writeline(obj.cValue);
}
在這種情況下的obj = objC所以bValue = 30和cValue = 40應發生。但我無法這樣做。 這是我的第三次嘗試。至少這次我希望我很清楚。
看來也許你應該問問你的問題的最佳方法,而不是如何將你的方形釘塞入圓孔。 1)沒有人能看出爲什麼泛型應該在這裏發揮作用。 2)你的兩個類是否應該有某種通用接口或基類? 3)如果你想設置一個或另一組變量,那麼必須將其添加到確定要返回哪個類的相同邏輯中,那麼爲什麼要將這些類放在第一位呢? – itsme86
這不是泛型所使用的,我建議你重新閱讀一些關於泛型的教程。 – Arran
這是我的第三次嘗試。至少這次我希望我很清楚。 – Anamika