写几个带继承关系的类,使用直接强转的方式,以及使用as转换, 并且练习is的类型判断
来源:互联网 发布:举牌照软件下载 编辑:程序博客网 时间:2024/06/05 18:24
接口IBaseA 、 IBaseB 和 IMyClass:
interface IBaseA { void PrintBaseA(); }
interface IBaseB { void PrintBaseB(); }
interface IMyClass { void PrintMyClass(); }
实现IBaseA 、 IBaseB 和 IMyClass接口,继承类:
class BaseA : IBaseA { public void PrintBaseA() { Console.WriteLine("This is PrintBaseA!"); } }
class BaseB : BaseA, IBaseB { public void PrintBaseB() { Console.WriteLine("This is PrintBaseB!"); } }
class MyClass : BaseB, IMyClass { public void PrintMyClass() { Console.WriteLine("This is PrintMyClass!"); } }
Main
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace InterfaceIsAs{ //======================================================================== // クラス名 : Program /// <summary> /// Program /// </summary> /// <remarks> /// 查看带几个继承的类,使用强制转化的方式, /// 以及使用as转换, 并且练习is的类型判断 /// </remarks> //======================================================================== class InterfaceIsAs { //======================================================================== // メソッド名 : Main /// <summary> /// Main /// </summary> /// <remarks> /// 强制转化,查看其继承方式 /// </remarks> //======================================================================== static void Main(string[] args) { BaseA a1 = new BaseA(); a1.PrintBaseA(); BaseA a2 = new BaseB(); a2.PrintBaseA(); BaseA a3 = new MyClass(); a3.PrintBaseA(); BaseB b1 = new BaseB(); b1.PrintBaseA(); b1.PrintBaseB(); BaseB b2 = new MyClass(); b2.PrintBaseA(); b2.PrintBaseB(); MyClass mc1 = new MyClass(); mc1.PrintBaseA(); mc1.PrintBaseB(); mc1.PrintMyClass(); //TestBaseA TestBaseA(a1); TestBaseA(a2); TestBaseA(a3); Console.WriteLine(); //TestBaseB TestBaseB(b1); TestBaseB(b2); Console.WriteLine(); //TestMyClass TestMyClass(mc1); Console.WriteLine(); Console.ReadKey(); } //======================================================================== // メソッド名 : TestBaseA /// <summary> /// TestBaseA /// </summary> /// <param name="a">辅助变量</param> //======================================================================== private static void TestBaseA(BaseA a) { /* * is: 检查对象是否与给定类型兼容,返回类型为bool(True or False) * * as: 用于在兼容的引用类型之间之行转换。 */ if (a is IBaseA) { IBaseA baseA = a as IBaseA; Console.WriteLine("baseA:{0}", baseA); } else { Console.WriteLine("Error!"); } } //======================================================================== // メソッド名 : TestBaseB /// <summary> /// TestBaseB /// </summary> /// <param name="b">辅助变量</param> //======================================================================== private static void TestBaseB(BaseB b) { if (b is IBaseB) { IBaseB baseB = b as IBaseB; Console.WriteLine("baseB:{0}", baseB); } else { Console.WriteLine("Error!"); } } //======================================================================== // メソッド名 : TestMyClass /// <summary> /// TestMyClass /// </summary> /// <param name="mc">辅助变量</param> //======================================================================== private static void TestMyClass(MyClass mc) { if (mc is IMyClass) { IMyClass myClass = mc as IMyClass; Console.WriteLine("myClass:{0}", myClass); } else { Console.WriteLine("Error!"); } } }}
- 写几个带继承关系的类,使用直接强转的方式,以及使用as转换, 并且练习is的类型判断
- 类型转换中as、is的使用
- 使用反射查询类的方法和字段以及使用IS运算符号类转换和AS运算符
- MFC view 继承类的直接使用方式
- Flex的四种判断对象类型的方式 as instanceof is typeof比较
- [C#] as 和 is 运算符以及安全的类型强制转换
- [C#] as 和 is 运算符以及安全的类型强制转换
- 强类型DataSet的使用
- C#下的强制类型转换应用分析:()、is、as
- C#的as, is和类型强制转换
- is和as在类型转换时的性能差异
- log4j框架logger的继承关系以及使用场景
- log4j框架logger的继承关系以及使用场景
- log4j框架logger的继承关系以及使用场景
- log4j框架logger的继承关系以及使用场景
- 使用spring注解方式实现组件的声明,并且用注解注入方式解决依赖关系
- 关于Swift as类型强转的细节说明
- C# 类型转换以及is、as
- (2)Camera框架 --- 窥一斑而见全豹
- jquery小结
- 删除Linux后如何找回Windows启动菜单
- Linux驱动编程 step-by-step
- 思科认证:让黑客远离DNS和SMTP攻击
- 写几个带继承关系的类,使用直接强转的方式,以及使用as转换, 并且练习is的类型判断
- 全面认识Android手机(MIUI ROM适配之旅第二天——准备工作)
- 淘宝现“职业追评人” 恶意追评为了“讨”个三五百
- 编写strcpy函数
- 全面认识Android手机(MIUI ROM适配之旅第三天——反编译)
- 组策略如何禁止用户存储windows凭证
- 我的空间EverET.org
- 插件式架构设计实践:插件式系统架构设计简介
- 思科路由器的DNS及DHCP功能