如何理解类名添加符号?

如何在C#中理解这段代码?

using System; internal class  { } 

类名不能包含符号但允许在代码中包含它? 你会如何实现这一目标? 我怎么能理解这种差异呢?

看看这段代码:

 internal class {D8BAC701-C957-4CBE-8F97-37BB3A7DAFFE} { static {D8BAC701-C957-4CBE-8F97-37BB3A7DAFFE}() { if (!(eqXmHMg8VVPy3nYeAo.eHiMp4DL8(Convert.ToBase64String(Type.GetTypeFromHandle(epOl6XynGueNUNwY5Y.e53w34m968awCm9P85taUZe(33554477)).Assembly.GetName().GetPublicKeyToken()), "eObc8gibn") != "34NavQ/3DsKjaKpYVSNSMjtuaXO9zUZlQl7AY+p3wrM=")) { return; } while (true) { eqXmHMg8VVPy3nYeAo.ce4DmfsmSrOT856tDgfrkMb(); } } } 

这个类甚至没有命名空间。

我用ILSpy反编译了这个DLL。 但是,我如何使用此代码并对其进行反模糊处理?

这看起来可能是混淆代码。 这个代码以一种仍然有效的方式编译到IL中,但人类无法轻易理解。

这是有效的,因为有效标识符的规则在C#和IL中是不同的。 因此,当您尝试反编译代码时,您将获得无效的C#,但IL本身是有效的。

此外,即使在C#中,类也不必在命名空间中。