使用FW 4.5.1
我有一个方法:
void DoSomething(string s)
我想允许函数也接受int
,但是在相同的参数下.这意味着我想写:
void DoSomething(var s)
有时s
会int
,有时string
.
我怎样才能做到这一点?
您可以考虑三个选项,具体取决于您实际尝试实现的目标:
public void DoSomething(int s) { ... } public void DoSomething(string s) { ... }
这只会接受int
和string
- 这可能是好事还是坏事,取决于你想要实现的目标.如果你真的只希望能够接受int
和string
,这是国际海事组织的最佳解决方案.
object
public void DoSomething(object s) { ... }
这将允许您传递任何内容.
public void DoSomething(T value) { ... }
这仍然允许您传入任何内容,但是如果(比方说)您希望稍后接受两个必须是相同类型的值(或至少是兼容类型),则会提供更多的类型安全性
你可以通过重载实现你想要的.
void DoSomething(string s){ DoSomething(int.Parse(s)); } void DoSomething(int s){ /* Your code here */ }
或者反过来说:
void DoSomething(string s){ /* Your code here */ } void DoSomething(int s){ DoSomething(s.ToString()); }
您可以使用泛型
void MyMethod(T param) { if (typeof(T) == typeof(int)) { // the object is an int } else if (typeof(T) == typeof(string)) { // the object is a string } }