Unity游戏制作中的C#基础(6)方法和类的知识点深度剖析

server/2025/2/24 21:26:36/

1.驼峰命名法

        在 C# 编程里,命名规范对于代码的可读性和可维护性至关重要,驼峰命名法便是其中广泛使用的一种命名约定,它主要分为小驼峰命名法大驼峰命名法(帕斯卡命名法)

  • 小驼峰命名法:这种命名方式的特点是第一个单词的首字母小写,从第二个单词开始,每个单词的首字母大写。它常用于变量和方法名的命名,例如:studentName 代表学生的姓名,calculateSum 用于表示计算总和的方法。使用小驼峰命名法可以使变量和方法名更加直观,让其他开发者一眼就能理解其用途。
  • 大驼峰命名法(帕斯卡命名法):每个单词的首字母都大写,常用于类名、接口名等。像 StudentInfo 这样的命名,清晰地表明这是一个与学生信息相关的类;IEnumerable 作为一个接口名,遵循大驼峰命名法,方便开发者识别和使用。

2.方法(Method)

(1)概念

        方法是一段具有特定功能的、可重复调用的代码块。它就像是一个功能盒子,将一组相关的语句组合在一起,专门用于实现一个特定的任务。通过使用方法,我们可以避免代码的重复编写,提高代码的复用性和可维护性。

(2)结构

[访问修饰符] [返回类型] 方法名([参数列表])
{// 方法体[return 返回值;]
}
  • 访问修饰符:访问修饰符的作用是控制方法的访问权限,在 C# 中常见的访问修饰符有:
    • public表示公共的,使用 public 修饰的方法可以被任何类访问,就像一个公共的资源,大家都可以使用。
    • private私有的方法只能在定义它的类内部访问,就像类的私有财产,外部无法直接触碰。
    • protected受保护的方法可以在定义它的类及其子类中访问,为子类提供了一定的访问权限。
    • internal内部方法只能在同一个程序集内访问,起到了一定的隔离作用。
  • 返回类型:返回类型指定了方法返回值的类型。如果方法不返回任何值,则使用 void。例如,一个用于打印信息的方法可能就不需要返回值,此时返回类型可以定义为 void;而一个用于计算两个数之和的方法,返回类型则可以定义为 int
  • 方法名:方法名需要遵循驼峰命名法,用于标识方法的功能。一个好的方法名应该能够清晰地表达该方法的作用,例如 CalculateArea 就明确表示这是一个计算面积的方法。
  • 参数列表:参数列表是可选的,它用于向方法传递数据。可以有零个或多个参数,多个参数之间用逗号分隔。例如,一个需要接收两个整数作为输入的方法,其参数列表可以写成 (int a, int b)

(3)作用

  • 代码复用:通过将常用的代码逻辑封装在方法中,我们可以在程序的不同地方多次调用该方法,避免了代码的重复编写,提高了代码的可维护性和可扩展性。例如,在一个计算图形面积的程序中,我们可以将计算矩形面积的代码封装在一个方法中,然后在需要计算不同矩形面积的地方多次调用该方法。
  • 模块化设计:方法能够将程序分解为多个小的、独立的模块,每个模块负责完成一个特定的任务。这样的设计使得代码结构更加清晰,易于理解和维护。例如,一个复杂的游戏程序可以分解为多个方法,分别负责处理游戏的不同部分,如角色移动、碰撞检测等。

(4)调用

方法定义完成后,就可以在其他地方通过方法名和必要的参数来调用它。以下是一个简单的示例:

class Program
{static void Main(){int result = Add(3, 5);Console.WriteLine(result);}static int Add(int a, int b){return a + b;}
}

        在这个示例中,Main 方法调用了 Add 方法,并将返回的结果存储在 result 变量中,最后将结果输出到控制台。


3.枚举类型

(1)概念

        枚举类型是一种值类型,它允许我们为一组具有相关性的常量赋予有意义的名称。通过使用枚举类型,我们可以将一些相关的常量组织在一起,使代码更加清晰和易于理解。

(2)作用

  • 提高代码可读性:使用枚举类型可以用有意义的名称代替数字或其他常量,使代码更易理解。例如,在一个表示星期的程序中,如果使用数字 1 - 7 来表示星期一到星期日,代码的可读性会很差;而使用枚举类型 Weekday 来表示,则可以使代码更加直观。
  • 类型安全枚举类型可以确保变量只能取枚举中定义的值,避免使用无效的值。例如,在定义一个表示颜色的枚举类型后,变量只能被赋值为枚举中定义的颜色,从而避免了使用无效的颜色值。

(3)结构

[访问修饰符] enum 枚举名
{枚举值 1,枚举值 2,...
}

枚举值默认从 0 开始依次递增,也可以为枚举值显式指定一个整数值。例如:

enum Weekday
{Monday = 1,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
}

在这个示例中,Monday 的值被显式指定为 1,后续的枚举值依次递增。

(4)使用方法案例

enum Weekday
{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
}class Program
{static void Main(){Weekday today = Weekday.Monday;Console.WriteLine(today);}
}

        在这个示例中,我们定义了一个 Weekday 枚举类型,并将 today 变量赋值为 Weekday.Monday,最后将其输出到控制台。


4.方法中参数的作用、定义与案例

(1)作用

        参数用于向方法传递数据,使方法能够根据不同的输入执行不同的操作。通过参数,我们可以使方法更加灵活和通用,适用于不同的场景。

(2)定义

        在方法定义时,参数列表中需要指定参数的类型和名称。可以有零个或多个参数,多个参数之间用逗号分隔。例如:

[访问修饰符] [返回类型] 方法名(参数类型 1 参数名 1, 参数类型 2 参数名 2, ...)
{// 方法体
}

(3)案例

class Program
{static void Main(){PrintMessage("Hello, World!");}static void PrintMessage(string message){Console.WriteLine(message);}
}

        在这个示例中,PrintMessage 方法接收一个 string 类型的参数 message,并将其输出到控制台。在 Main 方法中,我们调用 PrintMessage 方法并传递了一个字符串 "Hello, World!" 作为参数。


5.方法中的返回值

(1)作用

        返回值用于将方法的执行结果传递给调用者,使调用者能够获取方法的处理结果。通过返回值,我们可以在方法外部使用方法内部计算得到的结果。

(2)定义

        在方法定义时,返回类型指定了方法返回值的类型。如果方法需要返回值,在方法体中使用 return 语句返回一个与返回类型兼容的值。例如:

[访问修饰符] 返回类型 方法名([参数列表])
{// 方法体return 返回值;
}

(3)注意事项

        一个方法最多只能有一个返回值。如果需要返回多个值,可以使用数组、自定义类或 outref 参数等方式。例如,使用数组返回多个值的示例如下:

class Program
{static void Main(){int[] result = GetMinMax(new int[] { 1, 2, 3, 4, 5 });Console.WriteLine($"最小值:{result[0]},最大值:{result[1]}");}static int[] GetMinMax(int[] numbers){int min = numbers[0];int max = numbers[0];foreach (int num in numbers){if (num < min){min = num;}if (num > max){max = num;}}return new int[] { min, max };}
}

        在这个示例中,GetMinMax 方法接收一个整数数组作为参数,并返回一个包含最小值和最大值的整数数组。


6.类

(1)定义

        类是一种用户自定义的数据类型,它封装了数据(字段)和操作这些数据的方法。类就像是一个模板,通过它可以创建多个具有相同属性和行为的对象。

(2)作用

  • 数据封装:将相关的数据和操作封装在一起,隐藏实现细节,提高数据的安全性。例如,在一个银行账户类中,我们可以将账户余额等数据封装起来,只提供一些公共的方法来进行存款、取款等操作,避免外部直接访问和修改账户余额。
  • 代码复用:可以创建多个类的实例,每个实例都可以使用类中定义的方法和字段。通过创建多个账户对象,我们可以使用相同的账户类来管理不同的账户信息。
  • 继承和多态:支持类的继承和多态性,使代码更具灵活性和可扩展性。通过继承,子类可以继承父类的属性和方法,并可以添加自己的属性和方法;通过多态,我们可以使用父类的引用指向子类的对象,实现不同的行为。

(3)结构

[访问修饰符] class 类名
{// 字段[访问修饰符] 数据类型 字段名;// 方法[访问修饰符] [返回类型] 方法名([参数列表]){// 方法体}
}
class Student
{public string name;public int age;public void PrintInfo(){Console.WriteLine($"姓名:{name},年龄:{age}");}
}

        在这个示例中,Student 类包含了两个字段 name 和 age,以及一个方法 PrintInfo 用于打印学生的信息。


7.字段和方法

(1)字段

        字段是类中用于存储数据的变量。可以是各种数据类型,如整数、字符串、对象等。字段可以使用不同的访问修饰符来控制其访问权限,例如:

class Student
{public string name; // 公共字段,外部可以直接访问private int age; // 私有字段,外部无法直接访问public void SetAge(int newAge){if (newAge > 0){age = newAge;}}public int GetAge(){return age;}
}

        在这个示例中,name 是公共字段,外部可以直接访问;age 是私有字段,外部无法直接访问,只能通过 SetAge 和 GetAge 方法来进行设置和获取。

(2)方法

        方法是类中用于执行特定操作的代码块。可以访问和修改类的字段。例如,在 Student 类中,PrintInfo 方法可以访问 name 和 age 字段并将其信息打印出来。

(3)类的字段和方法调用

        创建类的实例后,可以通过实例名来访问类的字段和调用方法。例如:

class Program
{static void Main(){Student student = new Student();student.name = "张三";student.SetAge(20);student.PrintInfo();}
}

        在这个示例中,我们创建了一个 Student 类的实例 student,并通过实例名访问了 name 字段和调用了 SetAge 和 PrintInfo 方法。

(4)对象

对象是类的实例。通过 new 关键字创建类的对象。例如:

Student student = new Student();

在这个示例中,我们使用 new 关键字创建了一个 Student 类的对象 student


8.父类和子类

(1)概念

  • 父类(基类)是被继承的类,它定义了一些通用的属性和方法。父类就像是一个基础模板,为子类提供了一些公共的功能。
  • 子类(派生类)继承自父类,它可以继承父类的属性和方法,并可以添加自己的属性和方法。子类在父类的基础上进行扩展,实现更加具体的功能。

(2)继承的语法

[访问修饰符] class 子类名 : 父类名
{// 子类的成员
}

(3)案例

class Animal
{public void Eat(){Console.WriteLine("动物吃东西");}
}class Dog : Animal
{public void Bark(){Console.WriteLine("狗叫");}
}class Program
{static void Main(){Dog dog = new Dog();dog.Eat();dog.Bark();}
}

        在这个示例中,Dog 类继承自 Animal 类,Dog 类可以继承 Animal 类的 Eat 方法,并添加了自己的 Bark 方法。在 Main 方法中,我们创建了一个 Dog 类的对象 dog,并调用了 Eat 和 Bark 方法。


9.结语

        掌握这些知识点对于编写高质量的 C# 程序至关重要。希望通过本文的介绍,你能够对 C# 中的方法和类有更深入的理解和掌握


http://www.ppmy.cn/server/170406.html

相关文章

基于python+django的宠物商店-宠物管理系统源码+运行步骤

该系统是基于pythondjango开发的宠物商店-宠物管理系统。是给师妹开发的课程作业。现将源码开放给大家。大家学习过程中&#xff0c;如遇问题可以在github咨询作者。加油 演示地址 前台地址&#xff1a; http://pet.gitapp.cn 后台地址&#xff1a; http://pet.gitapp.cn/adm…

如何确定服务器是否被黑客入侵爆破

服务器被黑客入侵爆破&#xff08;如暴力破解密码或利用漏洞攻击&#xff09;是网络安全中常见的威胁之一。这类攻击可能导致数据泄露、服务中断甚至系统完全失控。本文将详细介绍如何检测服务器是否被黑客入侵爆破&#xff0c;并提供实用的代码示例和解决方案。 一、黑客入侵…

软件工程和系统分析与设计

软件工程 1、软件危机 2、软件过程模型 2.1 瀑布模型 2.2原型模型 2.3螺旋模型 2.4敏捷模型 2.5软件统一过程 3、软件能力成熟度模型 CMM 4、软件能力成熟度模型集成 CMMI 系统分析与设计 1、结构化方法SASD 1.1结构化分析 DFD 1.2结构化设计 SD-是一种面向数据流的设计…

玩转 Java 与 Python 交互,JEP 库来助力

文章目录 玩转 Java 与 Python 交互&#xff0c;JEP 库来助力一、背景介绍二、JEP 库是什么&#xff1f;三、如何安装 JEP 库&#xff1f;四、JEP 库的简单使用方法五、JEP 库的实际应用场景场景 1&#xff1a;数据处理场景 2&#xff1a;机器学习场景 3&#xff1a;科学计算场…

redis-性能下降的原因排查

问题现象 Redis 响应变慢&#xff0c;查询或写入操作耗时增加。 原因 数据量过大&#xff0c;导致操作复杂度增加。频繁的大 key 操作&#xff08;如 HGETALL、SMEMBERS&#xff09;。网络延迟或带宽不足。Redis 实例负载过高&#xff0c;CPU 或内存资源不足。AOF 或 RDB 持久…

(二)趣学设计模式 之 工厂方法模式!

目录 一、 啥是工厂方法模式&#xff1f;二、 为什么要用工厂方法模式&#xff1f;三、 工厂方法模式怎么实现&#xff1f;四、 工厂方法模式的应用场景五、 工厂方法模式的优点和缺点六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博…

14.7 LangChain Experimental 模块解析:解锁 Auto-GPT 开发新范式

LangChain Experimental 模块解析:解锁 Auto-GPT 开发新范式 关键词:LangChain Experimental、Auto-GPT 实现、自主智能体开发、Agent 架构设计、实验性功能实践 1. LangChain Experimental 模块的定位与核心能力 模块定位解析: #mermaid-svg-4xz2OlZBUFjkBmqw {font-fami…

C++初阶——简单实现list

目录 1、前言 2、List.h 3、Test.cpp 1、前言 1. 简单实现std::list&#xff0c;重点&#xff1a;迭代器&#xff0c;模板类&#xff0c;运算符重载。 2. 并不是&#xff0c;所有的类&#xff0c;都需要深拷贝&#xff0c;像迭代器类模板&#xff0c;只是用别的类的资源&am…