.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
从Csharp走到VB.Net(一):MyClass保留字

作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站

2003年开始我接触的第一个B/S项目是DotNet,用的是Csharp.到现在2年过去了,也接触了VB.Net的项目,一步步走过来,看到同时CLR平台,2种语言在保留字上的特性还是很大的.
以下我一一列来:
关于MyClass,大家请先建立一个VBConsoleApplication程序,将本文SourceCP进去

Module Module1

    Class BaseClass
        Public Overridable Sub MyMethod()
            Console.WriteLine("Father is 50 years old!")
        End Sub
        Public Sub UseMe()
            Me.MyMethod()   ' Use calling class's version, even if an override.
        End Sub
        Public Sub UseMyClass()
            MyClass.MyMethod()   ' Use this version and not any override.
        End Sub
    End Class
    Class DerivedClass : Inherits BaseClass
        Public Overrides Sub MyMethod()
            Console.WriteLine("child is just 25 years old!")
        End Sub
    End Class


    Sub Main()
        Dim child As New DerivedClass
        child.UseMe()
        child.UseMyClass()
        Console.ReadLine()

    End Sub

End Module
但是在Csharp里竟然无法实现,C#怎样也不允许我按非虚函数的方式调用一个虚函数。C++可以用类名::方法名的方式访问自身版本的函数,但C#的类名只能用来访问静态的成员。这真是C#一个奇怪的限制。也许是我少见多怪吧.在MSDN中是这么描述的:
MyClass 的行为类似于引用最初实现时类的当前实例的对象变量。MyClass 与 Me 类似,但对它的所有方法的调用都按该方法为 NotOverridable 来处理。因此,所调用的方法不受派生类中的重写影响。尽管 DerivedClass 重写了 MyMethod,但 UseMyClass 中的 MyClass 关键字使重写的影响无效,编译器会将该调用解析为 MyMethod 的基类版本。
MyClass 不能在 Shared 方法内部使用,但您可以在实例方法内部使用它来访问类的共享成员。




相关文章

相关软件