我需要的是一種方法,可以在條件之後返回一個類型(無對象,不允許強制轉型)。這裏有一個例子:C#,動態返回類型
??? right (string fullStr, int endPosition)
{
string tmpStr = "";
tmpStr = fullStr.Substring(endPosition);
if(tmpStr.Length == 1)
return tmpStr[0]; //return a char!!
else
return tmpStr; //return a string!!
}
我試圖仿製藥,但我只能返回一進去,(如果一個char進來一個char返回的類型,如果串進來一個字符串返回)。 我嘗試這樣做:
public static T right<T>(T stringToCheck, int endPosition)
{
if (typeof(T).ToString() == "System.String")
{
string fullString = (string)((object)stringToCheck);
string response = "";
response = fullString.Substring(endPosition);
if (response.Length == 1)
{
return (T)((object)response[0]);
}
else
return (T)((object)response);
}
return stringToCheck;
}
我不能使用類型轉換(返回的對象),不能使用REF PARAMS。
調用該方法必須保持相同的:
right(stringOrChar,int) -> returns string or char.
謝謝
也許你能幫助我們。爲什麼你想要有多種返回類型?爲什麼你在某些情況下需要字符串,而在其他情況下需要字符串? – McKay 2009-11-23 19:26:11
好吧,我需要這樣做的原因是因爲我移植了大量的代碼,語法大多是兼容的,但我必須知道它是否有可能這樣做,因爲有很多「left(str,1)<'x '',但其他時候它只是abc = left(str,3)。從字符到字符串似乎沒有明確的區別。這裏的目標是不要觸及代碼如果可能,但這不是因爲我不知道這是不可能的:-) – Enriquev 2009-11-23 19:46:27