标签:cto 否则 for only 运行 数据 显示 led com
1,类型转换
2,使用 is 和 as 进行转换
is指定对象是否兼容常见用法:
static void Main(string[] args) { object o1 = new object(); object o2 = new B(); object o3 = new D(); object o4 = o3; B b1 = new B(); B b2 = new D(); D d1 = new D(); //B b3 = new object(); //D d2 = new object(); if(b1 is D) { D d2 = (D)b1;//该代码不会运行。 } }
as 则 对对象进行尝试转换,如果失败则为null.
Employee e = o as Employee; if(e!=null) { //操作e }
3,关键字影响
C#关键字 | 类型 | 方法/属性/事件 | 常量/字段 |
abstract | 表示不能构造该类实列 | 表示派生类必须重写并实现该成员 | |
virtual | 表示派生类可以重写该成员 | ||
override | 表示派生类型正重写该成员 | ||
sealed | 标识该类不能作为基类 | 表示这个成员不能被派生类型重写。 | |
new | |||
4,CLR如何调用虚方法,属性和事件
虚方法 | 实列方法 | 静态方法 | |
call | OK | OK | OK |
callvirt | OK | OK |
5,const 和 readonly 的区别
const 将生成元数据,嵌入到应用程序的元数据中
readonly 修饰的字段,可以在构造器中进行更改,也可以通过反射技术进行更改,并且其影响应用程序。
6,实列构造器和类
构造器.ctor ----用于将实列初始化为良好状态
如果没有指定构造器,他将简单调用基类的构造器
public class SomeType{} // 等价于 public class SomeType{ public SomeType():base(){} }
7,类型构造器----类首次被访问时,执行代码
89public class SomeType{} // 等价于 public class SomeType{ static SomeType():base(){} }
8,操作符重载和转换操作符重载
可以查看 Decimal类
9,扩展方法
扩展方法 -----允许定义一个静态方法,并用实列方法的语法来调用它
class Program { static void Main(string[] args) { A a1 = new A("abc"); // a1.ShowA(); new[] { "a", "b" }.Show(); Console.ReadKey(); } } public class A { public string value { get; set; } public A(string b) { value = b; } } public static class A1 { public static void ShowA(this A b1) { Console.WriteLine("A"+b1.value); Console.ReadKey(); } public static void Show<T>(this IEnumerable<T> collection) { collection.ToList().ForEach(x => Console.WriteLine(x+Environment.NewLine)); } }
标签:cto 否则 for only 运行 数据 显示 led com
原文地址:https://www.cnblogs.com/frogkiller/p/12241835.html