是否可以用C#方式编写,当我写
时 String contestId = getParameter("contestId")
我在string中获得了contestId,但是当我写道:
int contestId = getParameter("contestId")
我将contestId解析为整数?
这只是一个简单的例子,展示了我试图实现的目标。
答案 0 :(得分:15)
不可以单独根据返回类型重载方法。但是,您可以引入一个通用参数:
T getParameter<T>(string input) {
// ... do stuff based on T ...
}
如果您使用的是C#3.0,则可以将此方法用作:
var str = getParameter<string>("contestid");
var integer = getParameter<int>("contestid");
因此只说实际类型一次。
答案 1 :(得分:3)
你可以做的一件事是返回一个单独的对象,它具有int和string的隐式转换运算符。这将非常接近你要求的行为。
但是,我不会在实践中这样做。隐含的转换通常会带来比它们更值得的麻烦。相反,添加一个通用参数,如Mehrdad所示:
var str = getParameter<string>("contestid");
var integer = getParameter<int>("contestid");
答案 2 :(得分:1)
我更喜欢这种方法,它读得很好。
Public Class ResultProxy
{
Private Object _Obj
Public ResultProxy(Object O)
{ _Obj = O; }
Public T As<T>()
{ return (T)_Obj; }
}
...
Public ResultProxy getParameter("contestId")
{
// your method's code
return new ResultProxy(YourPersonalFavorateReturnType);
}
...
String s = getParameter("contestId").As<String>();
答案 3 :(得分:1)
首先,答案是没有人提到的那样。为什么?你必须将方法的结果分配给某些东西吗?例如,你有吗
int getValue()
{
return 4;
}
getValue();
答案是肯定的,它可以,因此编译器无法通过其返回类型知道您打算调用哪个方法。
此处有个人意见,但我会提出一些与
相似的建议public string getContestIdAsString(string ConetestId);
public int getContestIdAsInt(string ContestId);
非常清楚每个人在做什么,你解决了你的问题。除非有我遗失的东西。
答案 4 :(得分:0)
public T GetParameter<T>(string parameterName)
{
//Do work
return value
}
string contestId = getParameter<string>("contestId")
int contestId = getParameter<int>("contestId")
这是您最好的选择的一个例子。