C#中的类和对象详解

本文详细介绍了C#中的类和对象,包括类的定义、成员(如字段、方法)、类型参数、基类、构造函数、方法重载等核心概念。还探讨了静态与实例方法、虚方法、重写、抽象方法以及方法签名的唯一性。通过丰富的示例,阐述了参数的四种类型、局部变量、静态与实例构造函数、属性、索引器、事件、运算符和终结器的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类简介

     类是最基本的C#类型,也是一种数据结构,类支持继承和多形性。下面看一下一个最简单的类声明:

    /// <summary>
    /// 这里为了方便大家观看用的是中文类名,实际编程中尽量不要使用中文
    /// </summary>
    public class 类
    {
        
        /// 定义变量        
        public int 变量1, 变量2;        
        /// 构造函数      
        public 类 ( int  参数1,int 参数2)
        {
            this. 变量1=参数1;
            this. 变量2=参数2;
        }
    }

     使用new运算符创建一个类实例,并会为此实例分配内存;调用构造函数来初始化实例,并返回对实例的引用;

     类   a=new 类(20,30);//这里的a是类实例   

 

成员

     类成员可能是静态成员(属于类,使用类名调用),可能是实例成员(属于类实例,通过类实例调用),我们这里所说的类实例还有一种说法叫做对象,大家不要纠结这些,说法不一样而已,下面列举一些类可以包含的成员类型:

  • 常量   
  • 字段
  • 方法
  • 属性
  • 索引器
  • 事件
  • 运算符
  • 构造函数
  • 终结器(永久放弃类实例前要执行的操作)
  • 类型(类声明的嵌套类型)

类型参数

    类型参数一般在尖括号里,下面看个示例吧,以下示例中:Students的类型参数是TAge和TSex:  

    class Studuents<TAge, TSex>
    {
        public TAge Age;
        public TSex Sex;
    }

     声明为需要使用类型参数的类类型被称为泛型类类型。结构、接口、和委托类型都可以是泛型。使用泛型类时,必须为每个类型参数提供类型自变,包含类型自变量的泛型类型被称为 构造泛型类型,下面看一个示例:

  Studuents<int , string> student_1 = new Studuents<int , string> { Age=20 , Sex="男" };
  int student_1_age = student_1. Age;
  string student_1_sex = student_1. Sex;

基类

     派生类继承其基类的成员,基类的变量可以引用相应类的实例或任意派生类的实例。派生类隐式包含其基类所有成员,实例和静态构造函数以及基类的终结器除外。派生类可以自由添加新成员,但是无法删除继承成员的定义。下面我们就看一下例子吧:

    /// <summary>
    /// 基类(父类)
    /// </summary>
    public class People
    {
        public int x, y;
        public People ( int x , int y )
        {
            this. x=x;
            this. y=y;
        }
        //基类的变量可以引用相应类的实例或任意派生类的实例
        People a = new People ( 10,20);
        People b = new Man ( 10,20,30); 
    }
    /// <summary>
    /// 派生类(子类)
    /// </summary>
    public class Man : People
    {
        public int z;
        public Man ( int x , int y,int z ) : base ( x , y )
        {
            this. z=z;
        }
    }

字段

     字段主要讲静态字段和实例字段,分别与类和类实例(对象)关联

     静态字段只指明一个存储位置   

     下面看一个例子:

    /// <summary>
    /// 声明一个学校类
    /// </summary>
    public class School
    {
        /// <summary>
        /// 静态字段  readonly修饰只读  只能在字段声明期间或在同一个类的构造函数中赋值
        /// </summary>
        public static readonly School junior_high_school = new School ("初中","3年" );
        public static readonly School High_school = new School ( "高中","3年");
        public static readonly School University = new School ("大学","专科3年,本科4年");
        /// <summary>
        ///实例字段
        /// </summary>
        private string china_Name, how_Year;
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="china_Name"></param>
        /// <param name="how_Year"></param>
        public School ( string china_Name,string how_Year)
        {
            this. china_Name=china_Name;
            this. how_Year=how_Year;

        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值