CLR允许我们根据out和ref参数来重载方法

[ 904 查看 / 1 回复 ]

class Point{
    static  void Add(Point p){}
    static void Add(ref Point p){}
}

但是,仅仅通过区分out ref来重载方法又是不合法的,因为它们经JIT编译后的代码是相同的。所以我们不能在上面的Point类型中再定义下面的方法:
static void Add(out Point p){}

——这里有点小疑问,我怎么感觉经过C#编译器之后,两者的IL代码就应该已经是相同的了。。——这要看IL代码了。。
TOP

我错了。。在IL代码中还是有区别的。。out传递,多了一个[out]。。不过,两者都是传递(class ConsoleApplication7.Point& p) Point实例的指针。。



 附件: 您所在的用户组无法下载或查看附件
TOP