目录
[1. 核心概念](#1. 核心概念)
[2. 类的定义](#2. 类的定义)
[3. 对象创建与赋值](#3. 对象创建与赋值)
[1. 值类型](#1. 值类型)
[2. 引用类型](#2. 引用类型)
[1. 方法概念](#1. 方法概念)
[2. 方法定义](#2. 方法定义)
[3. 方法调用](#3. 方法调用)
[1. 普通参数](#1. 普通参数)
[2. 多参数](#2. 多参数)
[3. 对象参数](#3. 对象参数)
[4. 默认参数](#4. 默认参数)
一、类和对象
1. 核心概念
- 类 :对象的模板 / 蓝图,是具有相同属性 和行为的集合
- 对象:类的实例化,是类具体的表现
2. 类的定义
- 关键字:
class - 命名规范:大驼峰
- 访问修饰:常用
public(公共)、internal(内部)
cs
public class Student
{
// 私有字段(类内部使用)
private int _age;
// 公共属性(外部访问)
public int Age { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
}
3. 对象创建与赋值
方式 1:先创建,后赋值
cs
Student student = new Student();
student.Name = "张三";
student.Age = 10;
student.Sex = "男";
方式 2:创建时直接赋值
cs
Student lisi = new Student() { Name = "李四", Age = 20, Sex = "女" };
二、值类型与引用类型
1. 值类型
- 存储:栈内存 ,保存值本身
- 赋值:拷贝一份新数据,互不影响
- 类型:
int、float、double、bool、char、枚举、结构体、DateTime
cs
int a = 10;
int b = a; // 拷贝值
a = 30; // 修改a,b不变
Console.WriteLine(b); // 10
2. 引用类型
- 存储:堆内存 ,保存内存地址 / 引用
- 赋值:拷贝地址,指向同一块内存,一改全改
- 类型:
string、class、对象、数组、集合
cs
Book b1 = new Book();
b1.Name = "远大前程";
Book b3 = new Book();
b3.Name = "无";
b1 = b3; // 共用地址
b3.Name = "无1"; // 修改b3,b1同步变化
Console.WriteLine(b1.Name); // 无1
三、方法的定义与调用
1. 方法概念
- 封装一段功能代码,实现代码复用
- 组成:修饰符 + 返回值 + 方法名 + 参数 + 方法体
2. 方法定义
cs
// 公共静态无返回值无参方法
public static void Test()
{
// 方法体
Console.WriteLine("方法执行");
}
3. 方法调用
- 静态方法:
类名.方法名()或直接调用 - 非静态方法:
对象.方法名()
cs
Test(); // 直接调用静态方法
Program.Test(); // 类名调用
四、方法参数
1. 普通参数
cs
public static void Test(string name)
{
Console.WriteLine(name);
}
// 调用
Test("细雪");
2. 多参数
cs
public static void Test1(int count, string name)
{
for (int i = 0; i < count; i++)
{
Console.WriteLine(name);
}
}
3. 对象参数
cs
public static void Test2(Dog dog)
{
Console.WriteLine(dog.Name + ":" + dog.Age);
}
4. 默认参数
- 写在参数列表最后
- 不传参使用默认值,传参使用传入值
cs
public static void Test4(int count, string name, string lieji = "劣迹明星")
{
Console.WriteLine(name + "是" + lieji);
}
// 调用
Test4(10, "你好"); // 使用默认值
Test4(10, "理解", "榜样明星"); // 使用传入值
五、核心总结
- 类与对象:类是模板,对象是实例;字段私有、属性公开
- 值类型:存栈中,赋值拷贝,互不影响
- 引用类型:存堆中,赋值传地址,一改全改
- 方法:封装功能,支持多参数、对象参数、默认参数
- 静态方法:通过类名直接调用,无需创建对象