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# 深入理解类的主要内容,如果未能解决你的问题,请参考以下文章