Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中的VB.NET模块是什么?_C#_Vb.net - Fatal编程技术网

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#静态类之间做一点比较是很

NET有类和模块,所以我的第一个问题是有什么区别?另外,我注意到C#没有模块,只有类,是否有一些模块替代了C#或者它们被删除了?

与VB模块最接近的是C#中的静态类

例如:

在VB.NET中

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!");
    }
}