【发布时间】:2008-11-06 21:22:56
【问题描述】:
我有一个包含两个方法的类:
public String getFoo(Int32 a)
{
return getBar(a, "b", null);
}
public String getBar(Int32 a, String b, Int32 c)
{
//do something
return "";
}
但是,当我编译我的课程时,我得到了两个错误:
- getBar(int,string,int) 的最佳重载方法匹配有一些无效参数
- 参数“3”:无法从“
<null>”转换为“int”
我想我明白为什么会出现此错误:编译器不知道 在编译时对象的真实类型是什么。 有人可以确认我对错误原因是否正确或指出真正的原因吗?
更重要的是,我可以这样设计我的代码吗?如果是这样,我需要做什么来修复错误?我以这种方式设计我的课程的原因是因为我不想在 getBar 和 getFoo 中复制代码。这两种方法的作用基本相同,只是一个采用第三个参数。
谢谢。
【问题讨论】:
-
谢谢大家。这正是我需要知道的。我对 Int32 的假设不正确,因为我认为它是从 System.Object 继承的对象。乔纳森的回答确实澄清了这一点。堆栈溢出摇滚!