C#笔记10 类:基础

这篇博客详细介绍了C#中的类,包括类的定义、成员(字段和方法)、实例化过程以及类成员的访问规则。通过示例代码解释了字段的初始化和方法的声明,并探讨了类内部和外部如何访问成员。最后,概述了C#代码的组织结构,从解决方案到类的方法层次结构。

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

C#笔记10 类:基础

——本系列是基于人民邮电出版社《C#2008 C#图解教程》、清华大学出版社《C#入门经典(第五版)》两本书的自学C#笔记,如果您发现了本文的纰漏,还望不吝指正。

写在前边

*复习:类型是一种模版,C#提供了15种预定义类型,还可以创建自己的用户定义类型,有6种类型:

  • 类类型(class)
  • 结构类型(struct)
  • 数组类型(array)
  • 枚举类型(enum)
  • 委托类型(delegate)
  • 接口类型(interface)

类在C#中是个很大的主题,关于它的讨论将会延伸至接下来的几篇

1. 什么是类

1).类是一种活动的数据结构

程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,称之为类

2).类是一种能存储数据并执行代码的数据结构,它包含:

  • 数据成员——存储数据
    包括:字段、常量
  • 函数成员——执行代码
    包括:方法,属性,构造函数,索引,运算符,事件,析构函数

3).类是复杂数据类型(引用类型)

*引用类型:需要一段存储实际的数据,一段引用(存放在栈中),指向数据在堆中存放的位置

所以类需要我们先定义出类型(声明),才能去使用它的数据(实例化,使用)

2.类的声明

1).创建用于创建实例的模版,包括:类的名称,类的成员,类的特征

<access specifier> class MyClass	//访问修饰符 <access specifier> 
{
	int MyField;
}

2).访问修饰符指定了对类及其成员的访问规则。如果没有指定,则使用默认的访问标识符。

类的默认访问修饰符是 internal,成员的默认访问标识符是 private。

访问修饰符:

  • 公有的pubilc :任何公有成员可以被外部的类访问。
  • 私有的private :只有同一个类中的函数可以访问它的私有成员。
  • 受保护的protected :该类内部和继承类中可以访问。
  • 内部的internal : 同一个程序集的对象可以访问。
  • 内部受保护的protected internal :protected和 internal 的并集,符合任意一条都可以访问。
  • 还可以指定类是:
    抽象的(关键字abstrac,不能实例化,只能继承,可以有抽象成员)或
    密封的(关键字sealed,不能继承,只能实例化)

3).类成员可以在类主体内部以任何顺序声明

3.类的成员

从类的定义中已知类包含数据成员和函数成员,所以字段和方法,是最重要的类成员类型。字段是数据成员,方法是函数成员。

3.1 字段

字段初始化:

  • 显示初始化
    在类中直接进行了变量的初始化(赋值)
  • 隐式初始化
    如果没有初始化语句,根据字段的类型,数值类型的默认值为0,bool类型为false,引用类型为null

例如,下面的代码声明了2个字段

class MyClass
{
	int F1;				//隐式初始化,默认值为0
	string F2 = "ab";	//显示初始化,值为"ab"
}

3.2 方法

方法是具有名称的可执行代码块,当方法被调用时,它执行自己所含的代码,然后返回到调用它的代码。有些方法返回一个值到它们被调用的位置。

声明一个简单的方法:

  • 返回类型
  • 名称
  • 参数列表
  • 方法体

例如,下面的代码声明一个类,类中包含一个名称为PrintNum的简单方法

class SimpleClass
{
	void PrintNum()		//没有返回值,参数列表为空
	{
		ConsoleWriteLine("1");	//{}内为方法体
	}
}

方法可以声明在类,结构体,接口中,关于复杂方法的使用后续还会有详细笔记

4.类的实例化

  • 声明类以后,系统为类变量的引用在栈中分配内存
  • 实例化类的过程是为实际数据分配内存

new运算符:

为任意指定类型的实例分配并初始化内存,根据类型的不同从栈或堆里分配。

new TypeName()

Dealer theDealer;			//声明引用变量
theDealer = new Dealer();	//为类对象分配内存

上边代码中的两步也可以结合到一起

Dealer theDeale = new Dealer();	 //声明并初始化

10-1
——上图出自 人民邮电出版社《C#2008 C#图解教程》第4章

5.类成员的访问

5.1 类内部访问成员

类内部的成员间可以自由地互相访问

类内部的方法,作为类的一个成员,它能在类的任何对象上操作,且能访问该对象的类的所有成员。

class Box
{
	private double length; 
	public void setLength( double len )
	{
		length = len;
	}
}

5.2 类外部访问成员

类中可能包含静态成员和非静态成员,这里先讨论非静态成员,静态成员会在后边和静态类放在一起,目前可以简单理解为: 不含有static关键字的类和成员都是非静态的

点(.)运算符:

如果要访问类的成员,要使用点(.)运算符

点运算符链接了对象的名称和成员的名称

例:

class Box
{
	public double length;   // 长度
	public double breadth;  // 宽度
	public double height;   // 高度
}
class Boxtester
{
	static void Main()
	{
		Box Box1 = new Box();        // 声明 Box1,类型为 Box
		Box Box2 = new Box();        // 声明 Box2,类型为 Box
		double volume = 0.0;         // 体积
		
		// Box1 详述
		Box1.height = 5.0;
		Box1.length = 6.0;
		Box1.breadth = 7.0;
		
		// Box2 详述
		Box2.height = 10.0;
		Box2.length = 12.0;
		Box2.breadth = 13.0;
		           
		// Box1 的体积
		volume = Box1.height * Box1.length * Box1.breadth;
		Console.WriteLine("Box1 的体积: {0}",  volume);
		
		// Box2 的体积
		volume = Box2.height * Box2.length * Box2.breadth;
		Console.WriteLine("Box2 的体积: {0}", volume);
		Console.ReadKey();
	}
}
//代码来自 菜鸟教程 https://www.runoob.com/csharp/csharp-class.html

控制台输出结果:


Box1 的体积: 210
Box2 的体积: 1560


写在最后

C#代码的组织结构

  • 解决方案(solution):项目之家
  • 项目(project):程序文件之家
  • 程序文件(.cs):命名空间之家
  • 命名空间(namespace):类之家
  • 类(class):方法之家
  • 主方法(Main):语句之家

C# 程序结构

一个 C# 程序主要包括以下部分:

  • 命名空间声明(Namespace declaration)
  • 类Class
  • Class 方法
  • Class 属性
  • 一个 Main 方法
  • 语句(Statements)& 表达式(Expressions)
  • 注释
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值