惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
F
Fortinet All Blogs
量子位
G
Google Developers Blog
J
Java Code Geeks
N
Netflix TechBlog - Medium
博客园 - 聂微东
宝玉的分享
宝玉的分享
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
雷峰网
雷峰网
M
MIT News - Artificial intelligence
T
Tailwind CSS Blog
V
Visual Studio Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss

博客园 - simply-zhao

Java 类加载基本原理[转] 浅谈Java内部类的四个应用场景[转--相当不错的文章] Java 局部类/匿名类[转] Java 静态内部类/内部类 Java Serializable Interface [转] Java Immutable Class[ From ] Java Clone机制[转] java clone机制 ANT十五大最佳实践【转】 Ant基础 System.TypeInitializationException C# Foundation---keyword: sealed C# Foundation---keyword: new C# Foundation---indexer C# Foundation---keyword: base & this C# Foundation Series C# Foundation---keyword: const & readonly & static readonly C# Foundation---keyword extern & P/Invoke [OS Homework] C# Foundation---keyword:static & static constructor
C# Foundation---keyword: abstract & virtual & new & override
simply-zhao · 2008-01-20 · via 博客园 - simply-zhao

  1using System;
  2using System.Collections.Generic;
  3using System.Text;
  4
  5namespace CSharpFoundationStudy
  6{
  7    /*
  8     * abstract virtual new override 关键字
  9     * abstract 修饰符可以用于类、方法、属性、事件和索引器,表示其为抽象成员
 10     * abstract 不可以和 static 、virtual 一起使用
 11     * 声明为 abstract 成员可以不包括实现代码,但只要类中还有未实现的抽象成员(即抽象类),那么它的对象就不能被实例化,通常用于强制继承类必须实现某一成员
 12     * 
 13     * 如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法,而不能覆盖。
 14     * 如果父类方法加了virtual关键字,即它是一个虚方法,在子类中一样可以隐藏。
 15     * 如果子类实现了父类相同的方法(相同的方法名称及签名),而没有new,在编译时会报警,但编译仍然能够通过!
 16     * 调用父类方法:base.方法名()
 17     * abstract类是一个抽象类,不能被实例化
 18     */

 19
 20    抽象基类
 49
 50    继承类
118
119    public class Test
120    {
121        public static void OnFunction(object sender, EventArgs e)
122        {
123            /*
124             * From: http://www.cnblogs.com/anytao/  [你必须知道的.NET] 第一回:恩怨情仇:is和as
125             * as VS is 类型安全
126             * 类型转换包括显示转换和隐式转换,在.NET中类型转换的基本规则如下:
127             *    任何类型都可以安全的转换为其基类类型,可以由隐式转换来完成;
128             *    任何类型转换为其派生类型时,必须进行显示转换,转换的规则是:(类型名)对象名;
129             *    使用GetType可以取得任何对象的精确类型;
130             *    基本类型可以使用Covert类实现类型转换;
131             *    除了string以外的其他类型都有Parse方法,用于将字符串类型转换为对应的基本类型;
132             *    值类型和引用类型的转换机制称为装箱(boxing)和拆箱(unboxing)。
133             * 
134             * is/as操作符,是C#中用于类型转换的,提供了对类型兼容性的判断,从而使得类型转换控制在安全的范畴,提供了灵活的类型转换控制
135             * is的规则如下:
136             *    检查对象类型的兼容性,并返回结果,true或者false;
137             *    不会抛出异常;
138             *    如果对象为null,则返回值永远为false。
139             * 
140             * as的规则如下:
141             *    检查对象类型的兼容性,并返回结果,如果不兼容就返回null;
142             *    不会抛出异常;
143             *    如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。
144             */

145            DerivedInstance instance = sender as DerivedInstance;
146            if (instance != null)
147            {
148                for (int i = 0; i < instance.Attribute.Length; i++)
149                {
150                    Console.WriteLine(instance[i]);
151                }
  
152            }

153        }

154        public static void Main()
155        {
156            DerivedInstance instance = new DerivedInstance();
157            instance.Event += new EventHandler(OnFunction);
158            instance.GFunction("simply-zhao 2008/1/20");
159            instance.VFunction("simply-zhao 2008/1/20");
160            instance.AFunction("simply-zhao 2008/1/20");
161            Console.ReadLine();
162        }

163    }

164}

165