C#基础语法一文通(五)

一. 继承

语法:

        public class Student:Person

      

注意:

  1. 子类无法使用父类的 private 变量;可以使用父类 protected 声明的变量子类可以用
  2. 声明父类,可以赋值任何子类 但自能使用父类参数和方法 如果想用子类,应该强制类型转换;
  3. 父类对象强转子类不会编译报错,但存在异常的风险
  4. 如果想强转但不抛出异常,可以: 父类对象 as 子类; 转换成功返回子类对象,失败返回null
        //例如:
            Person per1=new Student();//声明父类,指向子类
            Student stu1=(Student) per1;//此强转没问题
            Teacher tea1=(Teacher) per1;//此强转运行中会抛出异常
            //如果不想抛出异常可以
            Teacher tea2= per1 as Teacher;//此写法不会抛出异常,如果强转不成功,则对象赋值为null;
            if (tea2!=null){  //  所以,可以判断一下强转是否成功
                //此处写强转成功的处理代码
            }

      

二.静态成员变量 static

1.语法: public static int stuCount;

调用时: Student.stuCount;//用类对象调用

(相当于:类的静态区空间中的变量)

2.静态成员特点

v2-a7a29186a9d0f5799c9fc275bd06465b_b.jpg

静态成员变量要使用"类对象"调用

例子:

        //声明时:
public static int stuCount;
//调用时:

Console.WriteLine(Student.stuCount);

      

3 静态构造函数

类初始化时,会执行(仅)一次静态构造函数,来生成静态成员变量

v2-b18706a4d5a76c6b2b36169e3fb4e7ce_b.jpg

4. 静态方法

public static void fun1(){}

//所有实例对象其实都在引用同一个方法,这个方法存在类的静态区,此时实例对象把自己隐式传递给此方法.

//类对象也可以调用 静态方法 但不能访问实例成员.(此时静态方法引用时创建实例对象了吗?)

v2-26215dc52d49882316874c2078919f0c_b.jpg

5.静态类

v2-27bdf3addf0e05d153cf8cdf650265eb_b.jpg

6.静态的利与弊

v2-a1ff18e4f6268f6cf560aa779331fe9e_b.jpg

三.泛型集合(列表)

需要

泛型集合可简单相当于python中的列表 , 提供了增删改查的功能,相对于数组更灵活了;

语法:

        using System.Collections;
using System.Collections.Generic;            

            List<Student> students1 = new List<Student>();
            //其实质还是一个数组,但内部整合了一些灵活的方法,对长度要求没那么苛刻了,也减少了垃圾
            students1.Add(stu1);
            students1.Add(stu2);
            students1.Add(new Student());
            students1.Insert(2,new Student());
            students1.RemoveAt(2);
            students1.Remove(stu2);
            Student stu3=students1[1];
            int length=students1.Count;//列表长度
            students1.ToArray(); //转为数组

      

四.字典集合

相当于python中的字典 键值对组合

语法:

        using System.Collections;
using System.Collections.Generic;

Dictionary<string ,Student> studentDic=new Dictionary<string,Student>();
//声明字典
studentDic.Add("Anny",new Student("anny",18)); //按照键值对赋值
stu1=studentDic["Anny"]; //按键取值;

      

五. 结构体

  1. 结构struct

v2-b07df7813517f4655bff81725287aeed_b.jpg

2. 定义结构体:

v2-4a05f39743eb3ad7f57654e4d1e14987_b.jpg

3. 结构体构造函数

v2-817781e2ad7a711886dc07f295e6baa8_b.jpg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值