C#类中的成员

@

字段

字段的声明与声明变量类似,可以添加访问修饰符,通常情况下字段设置为私有的,然后定义属性对字段的读写进行限制

一般的命名规范约定,私有字段使用下划线前缀、小驼峰命名

private int _age    //定义一个私有字段_age

属性

属性拥有两个访问器(get和set),用于控制读取和写入,通常和字段配套使用,用来对字段进行读写限制

//定义一个Age属性,限制赋值给_age字段的值为18到60岁之间
//get和set类似于不能接受参数的方法,value是赋给Age属性的值
public int Age      
{
    get { return _age; }
    set {
        if(value >= 18 && value<=60)
            _age = value;
    }
}

方法

正式的C#术语中区分函数和方法,但是在初期,我们也可以把方法当成函数来理解

//定义一个SayAge方法,传递一个int类型的变量给SayAge方法,输出“我的年龄是~”
public void SayAge(int age)
{
    Console.WriteLine($"我的年龄是{age}")
}

构造函数

构造函数是在创建对象的时候调用的方法,主要作用是初始化字段(为字段赋值),构造函数支持重载,即根据不同的参数签名(参数列表和参数类型共同组成),调用不同的构造函数

//定义Pen类,并创建构造方法
class Pen
{
    private int _price;
    //无参构造方法,将_price字段初始化为0
    public Pen()
    {
        this._price = 0;
    }
    //接收一个int类型的构造方法,将_price字段初始化为传递进来的price变量
    public Pen(int price)
    {
        this._age = price;
    }
}
//注意事项:在如果没有定义构造函数,编译器会自动添加一个无参构造函数
//注意事项:如果自行定义了构造函数,无论带几个参数,编译器就不会再自动添加无参构造函数,如有需要,需要手动声明
//注意事项:如果构造函数没有为字段赋值,编译器会将值类型初始化为0,引用类型初始化为NULL

类和对象的简单解释

类是类别,是一个虚指;对象是具体的,是一个实指。如钢笔是一个类,我的价值15块的钢笔就是一个对象。

创建类和对象
//借用上方的Pen类,创建一个对象
Pen myPen = new Pen(15);
//此条语句创建了一个myPen对象,并调用Pen(int price)构造函数将myPen对象的_price字段赋值为15

类中成员的归属问题

类中的成员有静态和非静态的区别,非静态成员每个对象都有一份,静态成员类有一份

Pen myPen = new Pen(15);
Pen hePen = new Pen(150);
//上方Pen类中price字段定义为非静态成员
//在定义myPen和hePen两个对象中,每个对象都有自己的_price字段

静态成员属于类,对象是没有的,且一个类的每个静态成员只有一份

//静态成员使用static修饰
//在Pen中定义一个Write静态方法,这个方法属于类,使用类名.方法名调用,例如这里需要调用此静态方法的语句是Pen.Write()
class Pen
{
    public static void Write()
    {
        Console.WriteLine("笔可以写字");
    }
}
//注意事项:类的静态成员与对象无关,即实例化的Pen的对象myPen,是没有Write()方法的
//注意事项:每个类的每个静态成员只有一份,即Pen.Wirte()指向的方法和使用Pen实例化若干个对象后调用的Pen.Write()是同一个

类也可以定义为静态,静态类不能再实例化对象,定义静态类的主要作用是提供一些常用方法

如C#中的Console.WriteLine()就是一个静态类中的静态方法

C#类中的成员

上一篇:解决django报错:The view Hello_Api.views.updata_pwd didn't return an HttpResponse object. It returned None instead.


下一篇:用c#判断回文数和降序数