C#程序设计:静态成员与静态类的应用

需积分: 10 1 下载量 73 浏览量 更新于2024-08-19 收藏 1.33MB PPT 举报
"方法的参数传递-面向对象的程序设计" 在面向对象的程序设计中,方法的参数传递是一项基础且重要的概念。参数传递是将数据从调用方法的地方(通常是主程序或对象的方法)传递到被调用方法内部的方式。在C#中,有两种主要的参数传递方式:值传递和引用传递。 值传递是将参数的副本传递给方法。这意味着在方法内部对参数的修改不会影响到方法外部的原始变量。例如,在C#中,基本类型(如int、float)就是按值传递的。如果方法接收一个基本类型的参数并改变其值,这些更改仅在方法的局部作用域内有效。 ```csharp public void SetValue(int num) { num = 10; // 这里修改的是num的副本,不影响外部的值 } int originalValue = 5; SetValue(originalValue); Console.WriteLine(originalValue); // 输出仍为5,不受SetValue()的影响 ``` 引用传递则是将参数的实际引用(即内存地址)传递给方法。这样,方法内部对参数的修改会影响到原始变量。在C#中,对象引用是按引用传递的。这意味着当你传递一个对象作为参数时,实际上是传递了对象在内存中的引用,而不是对象的副本。 ```csharp public void ModifyObject(Book book) { book.Title = "新书名"; // 这里修改的是对象的属性,影响到原始对象 } Book myBook = new Book(); myBook.Title = "原书名"; ModifyObject(myBook); Console.WriteLine(myBook.Title); // 输出"新书名",受ModifyObject()影响 ``` C#中的静态成员和静态类是面向对象编程中的另一个关键概念。静态成员不属于任何对象实例,而是属于类本身。它们在类的生命周期中只被创建一次,且所有类的实例共享这些静态成员。静态成员可以是静态方法、字段、属性或事件。 例如,考虑一个`Book`类,我们可能希望统计已创建的`Book`对象的数量。这可以通过一个静态字段`count`来实现: ```csharp public class Book { private static int count = 0; public Book() { count++; } public static int GetBookCount() { return count; } } ``` 在这个例子中,`count`是静态字段,每次创建新的`Book`对象时,它的值会增加。`GetBookCount`是静态方法,可以直接通过类名访问,无需创建对象实例。 在实际应用中,如果类的成员不依赖于特定对象的状态,而是与类的整体行为相关,那么这些成员应该声明为静态。静态成员可以用来存储类级别的全局信息,例如配置信息或计数器,而不需要为每个对象实例创建副本。 理解方法的参数传递机制以及如何使用静态成员和静态类对于进行有效的C#面向对象编程至关重要。掌握这些概念有助于编写出更加高效、易于维护的代码。