C# 深入理解类

Posted DotNet基础教程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 深入理解类相关的知识,希望对你有一定的参考价值。

前言

什么是类?

1:类是一种活动的数据结构,程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,就是类

2:数据成员:存储实例相关数据,通常表示该类标示的现实世界的事物的特性,通常有[字段,常量]

3:函数成员:它执行代码模拟现实世界事物的功能和操作,通常有[方法,属性,运算符,索引器,事件,构造函数,析构函数]

4:C#类可以有任意数量的数据成员和函数成员

5:运行中的程序是一个相互作用的对象的集合

6:C#类的外部不能声明全局变量,所有字段必须声明在类的内部

7:方法是具有名称的可执行代码块,不返回数据的声明为void

8:类的声明只是为了创建类的实例,类是引用类型

9:New运算符为任意类型的实例分配并初始化内存,依据类型的不同分配到栈或者堆里

10:访问修饰符 [private 私有的,public 开放的,protected 受保护的,internal 内部的, protected internal 受保护的内部的]

11:私有成员是默认的访问级别,不指定访问修饰符,就默认为private,只能在类的内部访问,其他类看不见

 12:var关键字可以推断变量的类型,属于语法速记,只能用于本地变量,只能初始化对象时使用,推断出的类型是不能改变的

13:本地常量 const 常量声明时必须初始化,声明后不能改变,const属于核心声明,必须跟在元素前面

14:方法可以有任意的参数和特定类型的返回值

15: ref 引用类型参数,要在声明和方法的引用上都用上ref

16: out 输出参数 ,输出之前必须赋值

17: 参数数组params type [] name,可以传了进来一组参数

18:方法调用 参数过多的时候可以不按照顺序传值,采用命名参数,特别是针对带多个可选参数的方法特别有用

19:递归,方法调用自身叫递归,递归会产生优雅代码

20:this关键字代表对当前对象的引用,他只能出现在实例构造函数,或者实例方法里,可以用来区分本地成员变量和参数,也可以用作方法的实参


类的示例:

 class People { //类的字段【公有成员】 public int Age = 0; //可以声明多个字段,不赋值就会默认为默认值 int x, y = 1, z; //【私有成员 外部不可见】 string a, b = "B", c; //属性 public string Name { get; set; }
/// <summary> /// 成员函数【静态公有方法,类名.方法名 直接访问】 /// </summary> public static void Run() { //DoSomething..... } /// <summary> /// 【私有函数】 /// </summary> static void Call() { //DoSomething..... } /// <summary> /// 【非静态方法,通过对象访问】 /// </summary> /// <returns></returns> public int GetAge() { //访问字段 return Age; } /// <summary> /// 带参构造函数【初始化年龄字段】 this关键字的使用 可以用来区分本地成员变量和参数 /// </summary> /// <param name="age"></param> public People(int Age) { this.Age = Age; } public int GetPeopleInfo() { return GetAge(); } /// <summary> /// 无参构造函数【默认构造函数】 /// </summary> public People() { } }

初始化类的对象 每个实例成员都是单独的

 People people = new People() { Name = "Tom", Age = 15 }; People people1 = new People() { Name = "Tom1", Age = 15 }; People people2 = new People() { Name = "Tom2", Age = 15 };

类外部 类名.方法名 直接访问静态方法

 People.Run();

通过对象访问类的费静态方法和字段

 people.Name = "Jarry";//赋值 var name = people.Name;//取值 people.GetAge();//调用函数

var 示例

 var a = 10;//推断出是int类型 var b = "123";//推断出是string类型

常量的声明

const int c = 15;

ref 引用类型参数

 int z = 20; MyMethod(ref z);

out 输出参数 

 int a1; MyMethod(out a1);


MyMethod类

 /// <summary> /// 返回x*y的乘积 /// </summary> /// <param name="x">参数1</param> /// <param name="y">参数2</param> /// <returns>int类型的乘积</returns> public static int MyMethod(int x, int y) { return x * y; } public static int MyMethod(ref int a) { return a + 10; } public static int MyMethod(out int a) { a = 50; return a + 10; }

参数数组params type [] name,可以传了进来一组参数

 public static int MyMethod(params int[] arr) { return arr.Sum(); }

 带可选参数的方法,不传值就对应其默认值

 public static int MyMethod(int x, int y, int z, int a = 10, int b = 20) { return x + y + z + a + b; }

参数过多的时候可以不按照顺序传值,采用命名参数,特别是针对带多个可选参数的方法特别有用

 MyMethod(1, y: 15, z: 20, a: 25, b: 30); MyMethod(10, 20, 30, 40); MyMethod(10, 20, 30, 40, 50); MyMethod(10, 20, 30, 40, b: 50);

递归的示例

调用自身,返回一个数的阶乘

 int Fin(int val) { if (val <= 1) return val; return val * Fin(val); }

写在最后

类是一种活动的数据结构,程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,就是类,类是面向对象编程的产物,之前的程序员,注重程序的是执行和逻辑的搭配,类的出现促进了面向对象思想的发展。

以上是关于C# 深入理解类的主要内容,如果未能解决你的问题,请参考以下文章

C#图解教程 第六章 深入理解类

C#中的object类深入理解!最好给实例!及其转换!

深入理解C#

进入快速通道的委托(深入理解c#)

c# 深入理解事件1.0

深入理解DOM节点类型第四篇——文档片段节点DocumentFragment