.NET大局观笔记

 

 

接口用于规范一个类应该拥有什么样的成员

接口只能是成员的说明

 

ref 将函数中的对参数的修改返回到函数外

 

命名空间可以包含其它命名空间

 

委托,类似C语言函数指针

 

引用一旦被分配,一般不能被改变,指针则可以

引用存放在heap上,执政存放在stack

 

decimal 类型 高精度浮点型,28个有效数字(金融)

decimal val = 1.23M;

 

声明数组时[ ]必须跟在类型后面,而不是标识符后面

int[ ] table;

 

声明数组时必须实例化

int[ ] number = new int[5];

 

二维数组和交错数组:二维数组int [10,10]矩阵形式

交错数组number[ ][ ]每行列数可以不一样

每行分数组元素必须再次实例化

 

foreach (变量 in 集合)

循环体

 

int i = 123;

object o = i; //boxing 装箱

int j = (int) o; //unboxing拆箱

将值类型装箱成引用类型

 

类修饰符:

public : 可有任何其他类型访问

Private:只能由同一程序集中的类型访问

abstract:抽象类或成员,指示某个类只能是其他类的基类sealed:指定类中不能被继承

Virtual:可以在派生类中被重写的成员

static:静态类或成员

partial:在程序集中定义分部类

new:在子类中覆写基类成员

Override:在子类中扩展继承成员

event:声明事件

extern:指示在外部实现方法

readonly:声明字段只读

unsafe:声明不安全上下文

volatile:指示字段可由操作系统、硬件或并发执行线程等着程序中进行修改

 

override(重写) 

1、方法名、参数、返回值相同。

2、子类方法不能缩小父类方法的访问权限。

3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。

4、存在于父类和子类之间。

5、方法被定义为final不能被重写。

overload(重载)

1、参数类型、个数、顺序至少有一个不相同。  

2、不能重载只有返回值不同的方法名。

3、存在于父类和子类、同类中

 

继承中只允许单继承、父类在前,接口在后,接口可以多继承

 

 

09.24

 

通过委托类型声明事件

 

public event EventHandler MyEvent;

触发事件

MyEvent(this,null);

使用操作符+=

a.MyEvent += new  EventHandler(MyHandler);

 

操作符重载

operator+(int a,int b)

{

    return (a+b+1000);

}

 

const和static readonly定义的常量是静态的,只能由类直接访问;而readonly定义的常量是非静态 的,只能由实例对象访问;   

 

尽量使用私有字段private少使用public

 

如果在类内声明事件,必须首先声明该事件的委托类型

public delegate event 

 

委托:以函数为形参,委托函数运行时同时调用形参函数(被委托函数)

 

 

09.25

 

线程挂起

委托

 

泛型,类似C++中的模板,多个功能类似类型不同的函数可以用一个泛型来解决

public class GenericList<T>

{     void Add(T input)   { }   }

GenericList<int> list1 = new GenericList<int>();

GenericList<string> list2 = new GenericList<string>();

 

泛型和重载如何选择

 

集合数据类型(*****)

 

Lambda表达式:类似委托,支持带可绑定到委托或表达式树的输入参数的内联表达式(=>)读为goes to

x =>x*x

delegate int del(int i);

del myDelegate = x =>x*x;

int j = mDelegate(5); //j=25

 

 

var可赋予局部变量或数组‘’推断类型‘’(var)而非显示类型

var i = 5;//i is compiled as an int

var s = "Hello"//s is compiled as an string

var anon = new { Name = "Terry", Age = 34};//内部临时类匿名类型一般在查询表达式的select语句中,以便返回源序列中每个对象的属性子集

在LINQ中比较常见

 

LINQ:可以对数据库进行行扩展

 

GetType()获得数据类型

 

10.8

checked 和 unchecked

int x = Int32.MaxValue;

x = x + 1;

Console.WriteLine(x);

checked

{

     Console.WriteLine(X+1);//如果产生溢出抛出异常,缺省的情况下不检查溢出异常 ,带有溢出产生异常

}

public string StuNo1;

private string StuNo { get; set; } //好的编程习惯,尽量减少public字段

 

10.9

通过可读写属性实现属性

set{...} get{...}

 

特性Attribute

[DllImport(""user32.dll")]

public class MyDllimportClass

{..}

补充说明下列代码的特征,归属,编译过后仍然存在,虽然不存在可执行性信息

如何使用特性

 

CTS 通用类型系统

只定义语义,不定义语法

 

值类型:放在进程的堆栈(包括结构,枚举)(复制的时候复制包含的值)

引用类型:存放在内存内存空间的堆,堆的地址存放在堆栈中

(复制到时候仅仅复制对象的引用)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值