温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

为什么VB.NET模块在C#等语言中是没有的

发布时间:2021-12-02 14:02:29 阅读:262 作者:小新 栏目:编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

小编给大家分享一下为什么VB.NET模块在C#等语言中是没有的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

首先,这是一个历史原因。早先的VB语言都有模块和类模块的概念。所谓模块一般就是存放公用的一些方法(Sub)或者函数(Function),而类模块,相当于就是我们经常所说的类的概念。下面这个图是我从Excel的VBA中截取的,VB6里面也是这样类似的设计

其次,VB.NET模块还有一些新的东西。

VB.NET模块里面可以直接有方法,这些方法自动就是静态的(或者称为共享的——VB.NET中的关键字是Shared),这些方法可以直接调用,所以Module是无法实例化,也没有必要实例化的

模块无法继承,也无法实现接口

模块里面可以有类,但其实这个类并不需要真的通过模块作为前缀来引用。所以模块有点虚的概念

模块可以被组织到命名空间中去,因为模块其实是个虚的,所以它的方法也可以直接外层的命名空间调用。

下面有个例子。注意,这里的代码只是演示目的而写的,没有任何具体意义 。

'''可以用命名空间封装,这是比较好的做法  Namespace Xizhang  ''' < summary> ''' 模块无法继承,无法实现接口  ''' < /summary> ''' < remarks>< /remarks> Module Module1  ''' < summary> ''' 模块里面的方法都是静态的,无需实例化,也无从实例化  ''' < /summary> ''' < remarks>< /remarks> Sub Main()  Dim c As New class1  c.Name = "chenxizhang" Console.WriteLine(c.Name)  Console.WriteLine(c.GetClassName())  Console.Read()  End Sub 
''' < summary> ''' 类型可以放在模块里面,但主要的现实意义在于分类存放而已,放在模块里面并不影响该类型对外的引用。例如我们并不一定需要用Xizhang.Module1.Class1,而是直接通过Xizhang.Class1就可以对其进行引用  ''' < /summary> ''' < remarks>< /remarks> Public Class class1 : Implements IComparable  ''' < summary> ''' 类型可以继承一个基类,可以实现一个或者多个接口  ''' < /summary> ''' < remarks>< /remarks> Private _name As String  Public Property Name() As String  Get  Return _name  End Get  Set(ByVal value As String)  _name = value End Set  End Property  Public Function GetClassName() As String  Return Me.GetType().ToString()  End Function  Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo  Return 1  End Function  End Class  End Module  End Namespace 

以上是“为什么VB.NET模块在C#等语言中是没有的”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×