C#基础复习

本文详细阐述了类的成员,包括成员修饰符的顺序,静态和实例字段的差异,如何从外部访问静态成员以及它们的生存期。同时,讨论了静态函数成员如静态常量和属性,强调了属性的声明、访问器和关联字段。此外,还涵盖了构造函数、析构函数、readonly修饰符以及索引器的概念和用法。
摘要由CSDN通过智能技术生成

深入理解类

目录

深入理解类

类成员

 成员修饰符的顺序

 实例类成员

 静态字段

 从类的外部访问静态成员

 静态成员的生存期

静态函数成员

 其他静态类成员类型

 成员常量

 常量与静态量

属性

 属性声明和访问器

 属性示例

 使用属性

 属性和关联字段

 只读和只写属性

 自动实现属性

静态属性 

 实例构造函数

静态构造函数

 对象初始化语句

 析构函数

readonly修饰符

 this 关键字

 索引器

 什么是索引器

索引器和属性 

 声明索引器

索引器的 set 访问器 

 索引器的 get 访问器

索引器重载

访问器的访问修饰符

 分部类和分部类型

 分部方法


类成员

 成员修饰符的顺序

【可选的特性】【可选的修饰符】核心声明

 

 字段的类型和方法的返回类型不是修饰符,他们是核心声明的一部分

 实例类成员

类成员可以关联到类的一个实例,也可以关联到类的整体,即所有类的实例。默认情况下,成员被关联到一个实例。可以认为是类的每个实例拥有各自的各个类的成员的副本,这些成员称为实例成员

 静态字段

静态字段被类的所有实例共享。所有实例都访问同意内存位置。因此,如果该内存位置的值被一个实例改变了,这种改变对所有实例都可见

可以使用static修饰符将字段声明为静态

 从类的外部访问静态成员

静态成员可以使用点运算符从类的外部访问。但是因为没有实例所以必须用类名。

 静态成员的生存期

只有在实例创建之后才产生实例成员,在实例销毁之后实例成员也就不存在

但是即使类没有实例,也存在静态成员,并且可以访问

静态函数成员

 其他静态类成员类型

 成员常量

被声明在类声明中而不是方法内

与本地常量类似,用于初始化成员常量的值在编译时必须是可计算的,而且通常是一个预定义类型或由他们组成的表达式

与本地常量类似,不能在成员常量声明以后给他赋值

 常量与静态量

虽然常量成员表现得像一个静态量,但不能将常量声明为static

属性

属性是代表类的实例或类中的一个数据项的成员。使用属性看起来非常像写入或读取一个字段,语法是相同的

与字段类似,属性有如下特征:

                 它是命名的类型成员

 属性声明和访问器

 下图中的访问声明既没有 显式 的参数,也没有返回类型,不需要他们,因为它们已经在属性的类型中隐含了

 属性示例

 

 使用属性

 写入和读取属性的方法与访问字段一样,访问器被隐式调用

 属性和关联字段

 命名约定

 只读和只写属性

 自动实现属性

 可以是可以,但是有什么意义???

除了可方便以外,自动实现属性使你在倾向于声明一个公有字段的地方很容易插入一个属性

静态属性 

静态属性的访问器和静态成员一样,具有以下特点:

 实例构造函数

 

 如果在类的声明中没有显式的提供实例构造函数,那么编译器会提供一个隐式的默认构造函数,没有参数,方法体为空

静态构造函数

静态构造函数初始化类的静态字段

 

 对象初始化语句

 析构函数

readonly修饰符

字段可以用readonly修饰声明,起作用类似于将字段声明为const,一旦值被设定就不能改变

 

 this 关键字

this 关键字在类中使用,是对当前实例的引用。它只能被用在下列类成员的代码块中

 索引器

 什么是索引器

索引器和属性 

 

 声明索引器

索引器的 set 访问器 

 索引器的 get 访问器

 

 一个示例:

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

namespace Csharpzuoye
{
  class Employee
  {
        public string LastName;
        public string FirstName;
        public string CityOfBirth;
        
        public string this[int index]
        {
            set
            {
                switch (index)
                {
                    case 0:LastName = value;
                        break;
                    case 1:FirstName = value;
                        break;
                    case 2:CityOfBirth = value;
                        break;

                    default:
                        throw new ArgumentOutOfRangeException("index");
                }
            }
            get
            {
                switch (index)
                {
                    case 0:return LastName;
                    case 1:return FirstName;
                    case 2:return CityOfBirth;
                    default:
                        throw new ArgumentOutOfRangeException("index");
                }
            }
        }
  }
}

索引器重载

只要索引器的参数列表不同,类就可以有任意多个索引器。

访问器的访问修饰符

默认情况下,成员的两个访问器有和成员自身相同的访问级别。

不过也可以为两个访问器分配不同的访问级别

 

 

 分部类和分部类型

 

 分部方法

分部方法是声明在分布类中不同部分的方法。分部方法的不同部分可以声明在不同的分部类中,也可以声明在同一个类中。分部方法的两个部分如下:

 

 

 输出  11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值