Classes and Objects

C# 类定义的最后不需要加上一个分号,但是加上一个分号编译也能通过.

访问修饰符:

 

public

private

protected

internal

protected internal= protected U internal

 

private是默认的访问级别,可以不显式地指定,但是为了代码的可读性等考虑,最好显式指定.

 

参数: parameter VS. argument... 通常parameter指形参,argument指实参

 

C#中引用类型一般包括 类,接口,字符串,数组.

 

创建对象

值类型是在栈中创建的,而对象是引用类型,创建于堆中,需要使用关键字new,如下:

 

Time t=new Time();

t实际上不保存Time对象的值,它保存的是堆中创建的这个对象的地址(引用).

 

类的成员变量的初始值可以用初始化语句来设置,用初始化语句初始的值会被构造函数赋予的值覆盖.

public class example

{

    private test=1;//初始化语句

}

 

C#中没有拷贝构造函数,这种语法是通过ICloneable接口来实现的.

 

this关键字

this关键字指向对象的当前实例. this引用(或者叫this指针)作为参数隐式传递给类中所有非静态方法, 每个方法都能通过this引用指向对象的其他方法和变量.

 

this引用的典型用法很多. 第一种就是用于修饰被参数(parameter)隐藏的实例成员.见下例:

 

public void SomeMethod(int hour)

{

    this.hour=hour;

}

上面这个例子中SomeMethod()方法收到一个与类成员变量同名的参数(hour),this引用可以解决这种名字混淆的问题。this.hour指的是成员变量,hour指的是参数。

 

this引用的第二种用法是把当前对象作为参数传递给别的方法。

class myclass

{

    public void foo(otherclass otherobject)

    {

        otherobject.fun1(this);

    }

}

这样otherobject的fun1方法就可以使用myclass的当前实例的公开方法和成员了。

 

this引用的第三种用法与索引器有关,目前还不知道怎么回事。

 

this引用的第四种用法是在一个构造函数中调用另外一个重载(overloaded)的构造函数。比如:

class MyClass

{

    public MyClass(int i){...}

    Public MyClass():this(8){...}

 

}

上面的例子中,第二个构造函数通过使用this关键字调用了第一个带整形参数的构造函数。

 

最后一种使用this关键字的方法是显式调用一个类的方法和成员,作为文档的一种形式吧(使程序更可读一些)

 

使用静态成员

静态成员是类的一部分,而不象实例成员一样与某类型的实例有关。 在C#中通过实例访问静态方法或者成员变量是不合法的,这一点与C++是不一样的,要注意。

静态构造方法前没有访问修饰符。静态构造方法有啥用还不知道。。

 

C#中通过引用调用的写法:

public void GetTime(ref int hour, ref int minute,ref int second)

{

    hour=this.hour;

    minute=this.minute;

    second=this.second;

}

 

调用该函数的语句也应该写成t.GetTime(ref theHour, ref theMinute, ref theSecond);

这样,GetTime()方法的参数就可以被修改了。

 通过ref传递的变量必须在调用之前赋值。

 

out参数类似于ref参数,只有一点除外,它只能用于从方法传出值。在调用方法之前,不必给作为out参数使用的变量赋初始值。另外在方法内,out参数总认为是未赋值的,而在方法终止之前,它必须给参数赋值。

 

用属性封装数据

属性用来做什么的?

答:通过属性,客户代码可以访问对象的状态,而且看上去就像直接访问成员变量一样,但其实是通过类的方法实现的.

 

客户想直接访问对象的状态,不想处理方法,但是这是违背面向对象的封装精神的,所以C#的设计者设计了属性(property)来处理这一问题.

所谓属性,其实就是将成员变量与访问他的方法相结合.

 

 

静态公共常数:

public static readonly int year;

这样,year就被标示为常数了.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值