私が必要とするのは、条件に続いてタイプ(オブジェクトなし、キャスティングなし)を返すことができるメソッドです。ここでは一例です:charは文字で来た場合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!!
}
返された、文字列が文字列になった場合は、返されました(私は、ジェネリックを試みたが、私だけで来ていた型を返すことができました)。 は、私はこれを試してみました:
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
私がこの種の必要性を感じる理由は、コードの移植が多いためです。構文は主に互換性がありますが、 "left(str、1)
Enriquev