我想定义一个类,不想对它实例化然后再使用,就是说,我想直接使用。
我是这么写的,不知道这么写,有什么好处和弊端?请各位指点!
  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

解决方案 »

  1.   

    我的意思是,实例化一个类,说白了,就是先new 一下,再用里面的函数和方法。使用NotInheritable 不实例化一个类,不需要new,直接调用里面的函数和方法。的区别是什么?
      

  2.   

    静态方法,不用实例化就能使用!静态方法的关键字 
    c#:Static
    vb.net: Shared
      

  3.   

    楼上的,在vb.net中,如果方法所在的类不是静态类?你share有什么用?
    我的问题是针对,不是针对方法
      

  4.   

    NotInheritable用于不可被继承的“密封”类,与“不实例化一个类”无关
      

  5.   

    NotInheritable 的类是可以实例化的
      

  6.   

    以下 来自 msdn
    C# 程序员参考  
    静态类和静态类成员(C# 编程指南)  
     
    静态类
    类可以声明为static的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。静态类的主要功能如下:它们仅包含静态成员。它们不能被实例化。它们是密封的。它们不能包含实例构造函数(C# 编程指南)。因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。 静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。有关更多信息,请参见静态构造函数(C# 编程指南)。 
      

  7.   

    VB.NET中好像没有静态类
    C#中的静态类貌似对应VB.NET中的Module(模块)
      

  8.   

       说白了。。这样写的优点就是节省内存。。因为不用NEW。。缺点就是始终占用内存OVER。
      

  9.   

    如果一个人在程序中new一个对象,并不是为了节省内存的目的。
      

  10.   

    关注一下,SP1234 ,go on
      

  11.   

    回 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现在,您能明白我的问题了么?或许是我还没吃透你写的是什么意思。