C#中的base..ctor();是什么?

8
我正在反汇编一些C#应用程序,并尝试重构源代码。我正在将应用程序与所需的DLL一起进行反汇编。
我不断遇到这行代码base..ctor();,它给我带来了错误。该行出现在StreamException的某些子类中的一些voids中。
有人知道这个代码应该是什么吗?我认为反汇编器搞砸了它,它显然是无效的代码。 那么,有谁知道它的意思以及如何更改该行使其正常工作吗?
以下是其中一个子类的代码:
[Guid("ebc25cf6-9120-4283-b972-0e5520d0000E")]
public class ZlibException : Exception
{
    public ZlibException()
    {
        base..ctor();
        return;
    }

    public ZlibException(string s)
    {
        base..ctor();
        return;
    }
}

也许这个之前的帖子可以帮到你:链接 - nkvu
你也反汇编了构造函数吗? - Mr.Monshaw
2个回答

15

应该是:

[Guid("ebc25cf6-9120-4283-b972-0e5520d0000E")]
public class ZlibException : Exception
{
    public ZlibException() : base()
    {
        return;
    }

    public ZlibException(string s) : base()
    {
        return;
    }
}

这将在此类的基本实现上调用具有该签名的构造函数。

但默认情况下,.NET CLR 会为您调用基础空白构造函数,因此您实际上不需要: base()


5

它正在调用基础构造函数,您的反编译器只是以奇怪的方式显示它。在IL中,构造函数被简称为.ctor,因此当直接阅读IL时,您的反编译器显然会混淆,并认为这只是另一种方法。

实际代码应该是这样的:

public class ZlibException : Exception
{
    public ZlibException() : base();
    {
        return;
    }

    public ZlibException(string s) : base();
    {
        return;
    }
}

@ρσݥzση 抱歉,我一开始打错了。现在已经纠正过来了。 - p.s.w.g
谢谢,我在想这段代码是否混淆了。*(&(variable)) 对变量没什么影响吧?我知道 * 获取指针的内容,而 & 返回变量的地址,所以上面的代码并没有作用,只是毫无意义的混淆代码,目的是让读者迷惑对不对? - arch
@ρσݥzση 可能是这样,但我真的不确定。你可以尝试提出另一个问题来询问,但是警告一句,SO通常不会对混淆代码的问题做出良好的回应。如果你想避免任何负面评价,就必须谨慎地措辞提问。顺便问一句,你正在使用哪个反编译器? - p.s.w.g

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接