C#中的VB.NET模块是什么?
NET有类和模块,所以我的第一个问题是有什么区别?另外,我注意到C#没有模块,只有类,是否有一些模块替代了C#或者它们被删除了?与VB模块最接近的是C#中的静态类 例如: 在VB.NET中C#中的VB.NET模块是什么?,c#,vb.net,C#,Vb.net,NET有类和模块,所以我的第一个问题是有什么区别?另外,我注意到C#没有模块,只有类,是否有一些模块替代了C#或者它们被删除了?与VB模块最接近的是C#中的静态类 例如: 在VB.NET中 Module SomeModule Public Sub DoSomething MsgBox("Doing something!") End Sub End Module 在C#中也是这样: (对于我们这些无知的人——至少对我来说——在VB模块和C#静态类之间做一点比较是很
Module SomeModule
Public Sub DoSomething
MsgBox("Doing something!")
End Sub
End Module
在C#中也是这样:
(对于我们这些无知的人——至少对我来说——在VB模块和C#静态类之间做一点比较是很有趣的。)是的,VB.Net中的一个模块等于C#中的一个静态类,它也有同样的限制(比如它不能继承,总是只有一个实例,所有成员都是共享的)。@Aidiakapi Jared在一篇文章中说“模块与C#中的静态类不完全相同。如果模块中的方法位于导入的命名空间中,则它们实际上是全局的。“例如,在上面的VB代码中,您可以在任何类中编写
DoSomething
,但在C中,它必须使用类名DoSomethingFuncs进行限定。DoSomething
@MarkJ,这是它们的调用方式,而不是它们的工作方式。它们的范围确实比静态类的范围更广。一件值得注意的事情是,将VB.Net模块反编译为C会导致:[StandardModule]内部密封类模块1
,而将静态类(名为Module1)反编译为C会导致:内部抽象密封类模块1
。因此,区别在于类参数(可能用于反射),C#中的静态类也被标记为抽象类
public static class DoSomethingFuncs
{
public static void DoSomething() {
MessageBox.Show("Doing something!");
}
}