【VB.NET语法】我想定义一个类,不想对它实例化然后再使用。

wxylvmnn 2008-06-05 03:30:14
我想定义一个类,不想对它实例化然后再使用,就是说,我想直接使用。
我是这么写的,不知道这么写,有什么好处和弊端?请各位指点!


Public NotInheritable Class AAA
Public Shared Function AAAtest() As String
Return "OK"
End Function
End Class


然后在相同namespace下,
另外一个类文件中,我就直接使用了AAA的AAAtest函数。

Public Class BBB
Public Function BBBtest() As String
Dim pp As String = AAA.AAAtest
End Function
End Class


...全文
239 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxylvmnn 2008-06-09
  • 打赏
  • 举报
回复
回 sp1234

你說的很书面化,或许一个很正规的大项目的确会像你划分的那么明确,
但我这个的确很简单。
您所说的 业务背景内容的描述 在我这就是 登录系统的人员是否是管理权限

我只是想实现一下,
登录系统的人员是否是管理权限就是AAAtest这个函数(DA层)

因为这种机能的模块都开发过好几个了,



以前在DA层都是这么写的
Public Class AAA
Public Function AAAtest() As String
‘Return "OK" 这我不直接写ok了
’执行一系列的sql认证,返回权限识别字符串。
End Function
End Class

然后在BL业务层,我这么写
imports MySys.DA
function test() as string
Dim objDa as new AAA
Dim loginStr as string = objDa.AAAtest()

enf function

------------------------------------------------

而我这次DA层想写成
Public NotInheritable Class AAA
Public Shared Function AAAtest() As String
‘Return "OK" 这我不直接写ok了
’执行一系列的sql认证,返回权限识别字符串。
End Function
End Class

然后在BL业务层,我这么写
imports MySys.DA
function test() as string
Dim loginStr as string = AAA.AAAtest()
enf function



现在,您能明白我的问题了么?或许是我还没吃透你写的是什么意思。。。。
Hesperus 2008-06-05
  • 打赏
  • 举报
回复
关注一下,SP1234 ,go on
  • 打赏
  • 举报
回复
如果一个人在程序中new一个对象,并不是为了节省内存的目的。
fanliang11 2008-06-05
  • 打赏
  • 举报
回复
说白了。。这样写的优点就是节省内存。。因为不用NEW。。缺点就是始终占用内存。。。OVER。
  • 打赏
  • 举报
回复
哪怕再小的一个OO设计,也有业务内容,有不同类型的对象、职责、关联等描述。
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wxylvmnn 的回复:]
我的意思是,

实例化一个类,说白了,就是先new 一下,再用里面的函数和方法。



使用NotInheritable 不实例化一个类,不需要new,直接调用里面的函数和方法。

的区别是什么?
[/Quote]

这是因为你的例子中“没有内容”造成的。你看一些讲“面向对象设计入门”的文章,都要首先结合一套(或大或小的)领域模型来讲,这时候才可能出现“如何区分角色、职责、关联、接口、泛化、扩展性”等等概念,并结合工程的大小、开发周期和升级改造等来讨论用户需求的频繁改变如何影响了软件设计。

但是你的例子中,没有要解决的业务背景内容的描述,不知道它是简单还是复杂多变,只有编程术语。没有具体设计内容,技术有什么用?
l1519 2008-06-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wxylvmnn 的回复:]
那这么写的好处和坏处是什么?
[/Quote]
wxylvmnn 2008-06-05
  • 打赏
  • 举报
回复
那这么写的好处和坏处是什么?

viena 2008-06-05
  • 打赏
  • 举报
回复
VB.NET中好像没有静态类
C#中的静态类貌似对应VB.NET中的Module(模块)
stayalive 2008-06-05
  • 打赏
  • 举报
回复
以下 来自 msdn
C# 程序员参考
静态类和静态类成员(C# 编程指南)



静态类
类可以声明为static的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。

使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。

静态类的主要功能如下:

它们仅包含静态成员。

它们不能被实例化。

它们是密封的。

它们不能包含实例构造函数(C# 编程指南)。

因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。

使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。

静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。有关更多信息,请参见静态构造函数(C# 编程指南)。
viena 2008-06-05
  • 打赏
  • 举报
回复
NotInheritable 的类是可以实例化的
viena 2008-06-05
  • 打赏
  • 举报
回复
NotInheritable用于不可被继承的“密封”类,与“不实例化一个类”无关
stayalive 2008-06-05
  • 打赏
  • 举报
回复
静态方法只能通过 访问呢,不能通过 对象实例 访问。静态方法是全局方法,不管你实例化多少次这个类,这个静态方法就只有一个拷贝。

静态方法只能操作关于类,而不是关于类的实例的信息.

属性也是可以是静态的。当给类的静态属性赋值的时候,所有类的实例对象的,这个静态属性都是一样!
wxylvmnn 2008-06-05
  • 打赏
  • 举报
回复
楼上的,

在vb.net中,如果方法所在的类不是静态类?你share有什么用?


我的问题是针对,不是针对方法
stayalive 2008-06-05
  • 打赏
  • 举报
回复
静态方法,不用实例化就能使用!

静态方法的关键字
c#:Static
vb.net: Shared
wxylvmnn 2008-06-05
  • 打赏
  • 举报
回复
我的意思是,

实例化一个类,说白了,就是先new 一下,再用里面的函数和方法。



使用NotInheritable 不实例化一个类,不需要new,直接调用里面的函数和方法。

的区别是什么?
sailson1 2008-06-05
  • 打赏
  • 举报
回复
可以这么写啊,怎么了?看不明白你想问什么啊

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧