c#补充(2021-3-12)

1.const及readonly
const是 常量,只能用于修饰基本类型和string类型,可以修饰类的字段和局部变量(一般用于修饰局部变量,字段用readonly);readonly只能修饰字段,readonly修饰的变量只能赋一次值,在构造方法中赋值或在申明中赋值。

2.定义枚举类型
enum MyColor{
Red,Green,Blue}
使用枚举类型
MyColor c = MyColor.Red;
String name = c.ToString();//转化为字符串
c = (MyColor)Enum.Parse(typeof(MyColor),“Red”);//字符串转化为枚举

(3)结构struct
定义形式与类相同,可以继承接口,但不能被继承,结构没有构造函数,字段定义是不能赋初值。

(4)c#抛异常
throw new ArgumentException(“xxx”);//xxx为抛出异常的信息

(5)Override与new关键词
子类与父类签名相同的方法/属性/索引,可添加两种关键词
New关键词
新建子类成员,隐藏父类成员
是与父类完全无关的新成员(拒绝继承父类成员)
Override关键词
重写父类的虚方法、虚属性、虚索引(父类预定义的扩展点)
可以供父类实现多态
在这里插入图片描述
在这里插入图片描述
(6)使用base
使用base 访问父类的字段和方法
void sayHello(){
base.sayHello();
Console.WriteLine( "My school is " + school );
}

使用父类的构造方法
Student(string name, int age, string school ) : base( name, age ){
this.school = school;
}
PS:可以将base理解为父类的别名。

(7)方法的重载(overloading)
要求:各个方法的签名不能重复
方法签名:方法名及参数个数及类型构成(参数名和返回类型不算)

public void SayHello(){ // 签名 SayHello();
Console.WriteLine("Hello! My name is " + name );
}
public void SayHello( Person another ){ //签名 SayHello(Person)
Console.WriteLine(“Hello,” + another.name
+ "! My name is " + name );
}

当重载了多个函数时,函数调用找参数精确匹配的方法,没有再找参数是父类的方法
例如重载了两个函数:
在这里插入图片描述
调用函数:

在这里插入图片描述
虽然object类型是整型数组的父类可以赋给object,但参数是整型数组的函数更符合,所以调用第一个。
下面的例子调用第二个函数:
在这里插入图片描述
在这里插入图片描述
//string类是object类的子类。

(9)方法的首字母建议大写

(10)一般不在构造函数里抛异常

(11)索引器
索引器可以看作是带参数的属性。
索引的参数可以为整数、字符串等任意数据类型
参数数目可以允许一到多个。
常来对内部的数组/集合等字段的元素进行读写。
在这里插入图片描述

(12)一个类中可以重载多个构造函数,可以在一个构造函数中调用该类中的另一个构造函数用this.类型([参数列表])
public class Person
{

    public Person(string name, int age) : this(name, age, 0, string.Empty) //重载构造函数、和:base不同,:this在此处是调用本类之中的其他构造函数 
    {
    }

    public Person(string name,string email):this(name,0,0,email)//重载构造函数、和:base不同,:this在此处是调用本类之中的其他构造函数
    {
    }
    public Person(string name, int age, int height, string email)//重载构造函数//this调用的就是本条构造函数
    {
        this.Name = name;
        this.Age = age;
        this.Heigth = height;
        this.Email = email;
    }
    这样做的意义是简化代码,重载了多个构造函数,只需要具体写其中一个的函数体,其他构造函数调用一些的,缺少的参数赋值为0或null或“”。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值