尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

C#第二周学习情况

C#第二周学习情况 摘要本文是 C# 语言学习笔记涵盖第四至第六节课的核心内容。第四节课介绍了二维数组与交错数组的定义和用法以及方法函数的定义、访问修饰符与代码复用第五节课讲解了构造方法、方法重载、this 关键字、static 修饰符和属性封装第六节课介绍了继承的基本概念、单根性与传递性以及方法重写的规则。第四节课 C# 语言二维数组其实就是数组类型的升级版数据类型[,] 数组名 new 数据类型[n,m];int[,] matrix new int[3, 4]{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};他表示有三列四行还有一种数组叫做矩形二维数组和二维数组的区别就是有空值数据类型[][] 数组名 new int[数组元素个数][];int[][] jaggedArray new int[3][];jaggedArray[0] new int[2] { 1, 2 };jaggedArray[1] new int[4] { 3, 4, 5, 6 };jaggedArray[2] new int[3] { 7, 8, 9 };3 代表有三列但是不知道行里有几个数然后学习了我认为比较重要的 C# 的方法就比如之前学的 if for 等都是用在方法里面的[public] static 返回值类型 方法名([参数列表]){方法体;}public: 访问修饰符公开的公共的哪里都可以访问。static: 静态的这个上课的时候没有细讲大概意思是静态的类型只能用静态的意思方法可以提高代码的复用void 也是返回值类型但是他不用返回方法可以反复调用提高代码的复用第五节课 C# 构造方法主要是缩减我们代码的量然后就是方法的重载大概意思是在原来的基础上重写复写一个新的方法构造方法的作用就是给初始化对象赋值特点是构造函数没有返回值连 void 也不能写构造函数的名称跟类名一样没有具体的返回值如果存在有参的构造方法就不能去调用无参构造了所以创建一个类的时候把无参和有参都写上。无参构造public Student(){Console.WriteLine(我是无参构造方法。。。);}有参构造public Student(string name, int age, char sex, int chinese, int english, intmath){this.Name name;this.Age age;this.Sex sex;this.Chinese chinese;this.English english;this.Math math;}方法的重载在同一个类中方法名相同参数列表不同参数的个数、参数的类型、参数的顺序与返回值无关。1、如果参数的个数相同那么参数的类型就不能相同。2、如果参数的类型相同那么参数的个数就不能相同。new 就是开辟了一个空间创建对象this 在代码执行过程中谁调用了方法this 代表的就是谁this 就是所在函数所属对象的引用。this: 代表当前对象。代表哪个对象呢当前对象。简单说哪个对象调用了 this 所在的函数this 就代表哪个对象。注意类中所有成员调用都默认省略了 this在类的成员方法中如果访问自己类中的成员成员变量成员方法前面默认省略了 this 关键字。然后就是 static 他的特点是1. static 是一个修饰符用于修饰成员。成员变量和成员方法2. static 修饰的成员被所有的对象所共享。3. static 优先于对象存在因为 static 的成员随着类的加载就已经存在了。4. static 修饰的成员多了一种调用方式就可以直接被类名所调用。使用类名.静态成员。5. static 修饰的数据是共享数据对象中的存储的是特有数据。他和成员变量的区别成员变量随着对象的创建而存在随着对象的被回收而释放。静态变量随着类的加载而存在随着类的消失而消失。静态方法中不可以使用 thisthis 代表的是对象然后就是属性的省略就比如:class Player{private int money 100;public int Money{get { return money; }set { money value; }}}第六节课 C# 继承继承通常用于两个类之间的父子关系意思就是子类可以使用父类里的方法但是不能继承父类私有字段格式class 子类名: 父类名{ }举例: class Dog: Pet{ }Pet: 是父类也称为基类Dog: 是子类也称为派生类继承的单根行一个类只能有一个父类继承的传递性然后就是方法的重载在父类中有一个方法但是子类中也需要这个方法的名称但是子类中的方法的逻辑与父类方法中的逻辑不相同则需要在子类中对这个方法进行重写重写是子类对父类的允许访问的方法的实现过程进行重新编写返回值和形参都不能改变。如果父类中有一个方法则子类中默认是不允许出现同名方法如果出现了则系统认为是子类中要隐藏父类中的这个同名方法那么在子类对象调用方法之后则调用到的是子类中的方法方法重载的三种情况对比重载情况说明代码示例参数个数不同方法名相同参数个数不同即可构成重载。public int Add(int a, int b) { return a b; } public int Add(int a, int b, int c) { return a b c; }参数类型不同方法名相同参数个数相同但参数类型不同即可构成重载。public int Add(int a, int b) { return a b; } public double Add(double a, double b) { return a b; }参数顺序不同方法名相同参数个数和类型相同但参数顺序不同即可构成重载。public void Show(string name, int age) { Console.WriteLine(name age); } public void Show(int age, string name) { Console.WriteLine(age name); }说明方法重载与返回值无关只要参数列表个数、类型、顺序不同即可。调用时编译器会根据传入实参的类型和个数自动匹配对应的方法。矩形二维数组完整示例using System; class Program { static void Main() { // 初始化一个 3 行 4 列的矩形二维数组 int[,] matrix new int[3, 4] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; // 遍历输出所有元素 for (int i 0; i lt; 3; i) { for (int j 0; j lt; 4; j) { Console.Write(matrix[i, j] \t); } Console.WriteLine(); } } } // 运行结果 // 1 2 3 4 // 5 6 7 8 // 9 10 11 12交错数组完整示例using System; class Program { static void Main() { // 初始化一个交错数组外层有 3 个元素 int[][] jaggedArray new int[3][]; jaggedArray[0] new int[2] { 1, 2 }; jaggedArray[1] new int[4] { 3, 4, 5, 6 }; jaggedArray[2] new int[3] { 7, 8, 9 }; // 遍历输出所有元素 for (int i 0; i lt; jaggedArray.Length; i) { for (int j 0; j lt; jaggedArray[i].Length; j) { Console.Write(jaggedArray[i][j] \t); } Console.WriteLine(); } } } // 运行结果 // 1 2 // 3 4 5 6 // 7 8 9内存分配区别矩形二维数组int[,]在内存中是一整块连续的空间所有行长度相同访问时按行列下标直接计算偏移效率较高而交错数组int[][]是「数组的数组」外层数组只保存指向各子数组的引用每个子数组在内存中独立分配、长度可以不同因此更灵活但访问时需要多一次间接寻址。
返回列表