C#读书笔记
1.类的定义
internal class myclass{
//internal表示只有当前项目中的代码才能访问,这个关键字可以不用写.
}
public class myclass{
//public表示可以由其他项目中的代码来访问
}
public abstract class myclass{
//abstract表示类是抽象的(不能实例化,只能继承,可以有抽象成员)
}
public sealed class myclass{
//sealed 表示密封的(不能继承)
}
public class myclass : Imyinterface ,mybase{
//这个声明是无效的,因为类(mybase)必须在接口(Imyinterface)的前面.
}
表:是类定义中可以使用的访问修饰符的组合
|
修饰符 |
含义 |
|
无或internal |
类只能在当前项目中访问 |
|
public |
类可以在任何地方访问 |
|
abstract或internal abstract |
类只能在当前项目中访问,不能实例化,只能继承. |
|
public abstract |
类可以在任何地方访问,不能实例化,只能继承 |
|
sealed 或 internal sealed |
类只能在当前项目中访问,不能派生,只能实例化 |
|
public sealed |
类可以在任何地方访问,不能派生,只能实例化 |
2.接口的定义
interface Imyinterface{
//interface 表示定义接口的关键字
}
typeof() //这是一个c#运算符,可以把类名转换为System.type对象).
析构函数
在.net中使用的析构函数(由system.object类提供)叫作finalize(),但这
不是我们用于声明析构函数的名称.使用下面的代码,而不是重写finalize():
class myclass
{
~myclass()
{
//在调用这个析构函数后,还将隐式地调用基类的析构函数,包括system.object根类中的finalize()调用.
}
}
public class myderivedclass:mybasclass
{
......
public myderivedclass(int i,int j):base(i)
{
//其中,base关键字指定.net实例化过程使用基类中匹配指定签名的构造函数.
}
}
public class myderivedclass :mybaseclass
{
public myderivedclass():this(5,6)
{
//this 这个关键字指定在调用指定的构造函数前,.net实例化过程对当前类使用非默认的构造函数.
}
........
public myderivedclass(int i,int j):base(i)
{
}
}
成员的访问级别:
public-------- 成员可以由任何代码访问.
private------- 成员只能由类中的代码访问(如果没有使用任何关键字,就默认使用这个关键字)
internal-------成员只能由定义它的项目(程序集)内部的代码访问.
protected------成员只能由类或派生类中的代码访问.
class myclass
{
public readonly int MyInt=17;//readonly 表示这个字段只能在执行构造函数的过程中赋值,或由初始化赋值语句赋值.
}
方法定义中使用下述关键字:
virtual-----方法可以重写.
abstract-----方法必须在非抽象的派生类中重写(只用于抽象类中).
override-----方法重写了一个基类方法(如果方法被重写,就必须使用该关键字).
extern-----方法定义放在其他地方.
public class mybaseclass
{
public void dosomething()
{
}
}
public class myderivedclass :mybaseclass
{
new public void dosomething()
{
//new 显示地说明,这是要隐藏的成员.
}
}
public partial class myclass
{
//partial 表示部分类定义.使类的定义横跨多个文件.
例如把字段,属性和构造函数放在一个文件中,而把方法放在另一个文件中.
}
集合:
在system.collections命名空间中有许多接口都提供了基本的集合功能:
IEnumerable 可以知代集合中的项.
Icollection(继承于IEnumerable)可以获取集合中项的个数,并能把项复制到一个简单的数组类型中.
IList(继承于IEnumerable和ICollection)提供了集合的项列表,并可以访问这些项,以及其他一些与项列表相关的功能.
IDictionary(继承于IEnumerable 和ICollection)类似于IList,但提供了可通过键码值而不是索引访问的项列表.
system.array 类实现了Ilist,ICollection 和IEnumerable,但不支持Ilist的一些高级的功能,表示大小固定的项列表.
public class Animals : CollectionBase
{//索引符是一种特殊类型的属性,可以把它添加到一个类中,以提供类似于数组的访问.
......
public Animal this[int animalIndex]
{
get
{
return (Animal)List[animalIndex];
}
set
{
List[animalIndex]=value;
}
}
}
public class AddClass1
{
public int val;
public static AddClass1 operator +(AddClass op1,AddClass1 op2)
{
AddClass1 returnVal=new AddClass1();
returnVal.val=op1.val +op2.val;
return returnVal;
}
}

浙公网安备 33010602011771号