日期:2014-05-18  浏览次数:20774 次

C#核心基础知识归纳

C#核心基础知识归纳
2010年08月13日
  Net规范与实现 品味类型    ---简单数据类型
  ---值类型与引用类型
  ---类型判等
  ---类型转换
  ---类型获取
  ---枚举
  ---String
  控件继承关系
  内存管理
  ---内存常识
  ---垃圾收集
  ---传参的艺术
  ---浅拷贝和深拷贝
  面向对象
  ---继承
  ---多态
  其他杂项
  ---using的用法
  ---装箱拆箱
  ---base,this
  ---lock,unsafe,sealed
  ---const,readonly
  ---特性
  ---is,as
  ---动静之间
  ---委托,匿名方法
  .Net规范与实现:
  规范:[CLI  [CTS,CLS,CIL]]
  实现:[.net framework  [CLR,FCL]]
  CLI:公共语言架构
  CTS:通用类型系统
  CLS:公共语言规范
  CIL:通用中间语言
  CLR:公共语言运行时
  FCL:.Net框架类库
  品味类型:
  ---简单数据类型
  sbyte 1
  byte 1
  short 2
  ushort 2
  int 4 
  uint   4
  long 8
  ulong 8
  float 4
  double 8
  decimal   16
  char 2
  bool 1
  string
  ---值类型与引用类型
  值类型:简单类型,枚举类型,结构类型
  引用类型:类类型,接口类型,数组类型,委托类型
  值类型分配在线程的堆栈上,引用类型分配在托管堆上(85000B在LOH堆),引用值本身在线程堆栈上
  Type.IsValueType判断一个类型是否为值类型 sizeof()获取值类型大小,不适用于引用类型
  引用类型在性能上欠于值类型
  值类型都继承自System.ValueType,System.ValueType又继承自System.Object,引用类型都继承自System.Object
  值类型是sealed密封的,不能作基类
  值类型有两种状态,装箱和未装箱,引用类型只有装箱
  MSDN建议以类型大小作为选择值类型和引用类型的决定因素。不表现出行为,以存储数据为目的情况下,值类型是优先选择
  ---类型判等
  主要有Equals(),ReferenceEquals(),==,!=3种方法,核心方法是Equals.
  值类型判等:
  Equals重载了System.Object的Equals方法,用于实现对实例数据判等
  ReferenceEquals对值类型永远返回False
  == 未重载的==比较两个值是否值相同
  引用类型判等:
  public virtual bool Equals(object obj);
  public static bool Equals(object objA, object objB);
  虚方法默认比较地址相等,由子类覆写
  静态方法在如下情况返回true:
  1.objA,objB是相同的实例,或两者都是空引用。
  2.虚方法返回true
  ReferenceEquals比较两对象是否指向同一地址
  ==未重载前也是比较两对象是否指向同一地址
  对于引用类型,如果已经覆写Equals,==就不要重载,保持其默认语义就是恰当的处理了
  如果x.Equals(y)==true成立,必有x.GetHashCode() == y.GetHashCode()成立。如果覆写了Equals而没有实现GetHashCode,编译器会报警
  ---类型转换 隐式转换:值向值,引用向引用,值向引用
  显式转换:
  01staticpublicexplicitoperatorMyStruct(intmyNo)
  02{
  03     returnnewMyStruct(myNo);
  04}
  05
  06staticpublicimplicitoperatorstring(MyClassmc)
  07{
  08     returnmc.ToString();
  09}
  10
  11MyStructMyNum=(MyStruct)i;
  12stringstr=MyCls;
  有损转换,或可能抛异常的转换,最好用显示转换
  ---类型获取
  obj.GetType();
  typeof
  ---枚举
  默认是int, 从0开始
  enum typename : underlyingType
  可以是 sbyte,byte,short,ushort,int,uint,long,ulong ---String 字符串的恒定性(细节见你必须知道的.net) 控件继承关系:
  所有类都继承自 System.Object MarshalByRefObject Component Control ButtonBase CheckBox    
  RadioButton    
  Button    
  ListControl ListBox CheckedListBox   
  ComboBox    
  TextBoxBase MaskedTextBox    
  RichTextBox    
  TextBox    
  ScrollableControl ContainerControl Form PrintPreviewDialog  
  ToolStripDropDown ToolStripDropDownMenu ContextMenuStrip 
  MenuStrip   
  StatusStrip   
  ToolStripContainer   
  UpDownBase NumericUpDown  
  Panel FlowLayoutPanel  
  TableLayoutPanel  
  SplitContainer   
  ToolStrip    
  DateTimePicker     
  Labe