吴佳鑫的个人专栏

当日事当日毕,没有任何借口

导航

定义类成员

访问级别:
public
private
internal  成员只能由定义它的项目(程序集)内部的代码访问
protected  成员只能由类或派生类中的代码访问
protected internal  只能由项目(程序集)中派生类的代码来访问

定义字段:
readonly: 表示这个字段只能在执行构造函数的过程中赋值,或由初始化赋值语句赋值
static:静态字段

定义方法:
static
virtual  方法可重写
abstract 方法必须在非抽象的派生类中重写(只用于抽象类中)
override  方法重写了一个基类方法(如果方法被重写,就必须用该关键字)
extern  方法定义放在其他地方
override sealed 方法不能由派生类重写

定义属性:
private int myInt;
public int MyIntProp
{
  get{return myInt;}
  set{myInt=value;}
}
属性可以使用virtual,override,abstract 关键字,但这几个关键字不能用在字段中。

 

自动属性
public int MyIntProp
{
  get;
  set;
}
C#编译器会添加未输入的内容,编译哭会声明一个用于存储属性的私有字段,并在属性的get和set块中使用该

字段。
我们以通常的方式定义属性的可访问性,类型和名称,但没有给get和set块提供执行代码。这些块执行代码(

和底层的字段)都由编译器提供。
使用自动属性时,只能通过 属性访问数据。
自动属性唯一限制是它们必须包含get和set访问器,不能用这种方式定义只读或只写的属性


隐藏基类方法:new
重写基本类方法:override
例如:

重写

代码
1 public class MyBaseClass
2 {
3 public virtual void DoSonething();
4 {
5 Console.WriteLine("Base imp");
6 }
7 }
8
9  public class MyDerivedClass:MyBaseClass
10 {
11 public override void DoSomething()
12 {
13 Console.WriteLine("Derived imp");
14 }
15 }
16
17 MyDerivedClass myObj = new MyDerivedClass();
18 MyBaseClass myBaseObj;
19 myBaseObj = myObj;
20 myBaseObj.DoSomething();
21 结果: Derived imp
22
23  

 

 


隐藏

 

代码
1 public class MyBaseClass
2 {
3 public virtual void DoSonething();
4 {
5 Console.WriteLine("Base imp");
6 }
7 }
8
9  public class MyDerivedClass:MyBaseClass
10 {
11 new public void DoSomething()
12 {
13 Console.WriteLine("Derived imp");
14 }
15 }
16
17 MyDerivedClass myObj = new MyDerivedClass();
18 MyBaseClass myBaseObj;
19 myBaseObj = myObj;
20 myBaseObj.DoSomething();
21 结果: Base imp
22
23  

 

 


无论是重写还是隐藏成员,都可以在派生类的内部访问基类成员。使用base关键字
public class MyBaseClass
{
   public virtual void DoSonething();
    {
         Console.WriteLine("Base imp");
    }
}

public class MyDerivedClass:MyBaseClass
{
     base.DoSomthing();  //这里调用的是基类的方法
}

 

接口:
注意:
1.不允许使用访问修饰符(public ,private ,protected,internal),所有的接口成员都是公共的。
2.接口成员不能包含代码体
3.接口不能定义字段成员
4.接口成员不能用关键字static ,virtual,abstract,sealed来定义
5.类型定义成员是禁止的
6.如果隐藏了基接口成员,可以用关键字new来定义它们

在类中实现接口:
实现接口的类必须包含该接口所有成员的执行代码,且必须匹配指定的签名(包括匹配指定的get和set块),

并且必须是公共的

代码
1 public interface IMyInterface
2 {
3 void DoSomething();
4 void DoSomethingElse();
5 }
6  public class MyClass:IMyInterface
7 {
8 public void DoSomething()
9 {
10 }
11 public void DoSomethingElse()
12 {
13 }
14 }

 

 

可以使用关键字virtual或abstract 来执行接口成员,便不能使用static 或const。
继承一个实现给定接口的基类,就意味着派生类隐式地支持这个接口。

 

 

部分类partial

使用部分类定义,使类的定义放到多个文件中,例如,可以把字段,属性和构造函数入在一个文件中,而把方

法放在另一个文件中,为此,只需在每个包含部分类定义的文件中对类使用partial关键字就可
public partial class MyClass
{
}

posted on 2010-01-24 13:06  _eagle  阅读(1063)  评论(0编辑  收藏  举报