C# 是一种面向对象的编程语言,其程序结构与许多其他现代编程语言相似。然而,C# 提供了独特的特性和最佳实践,以确保代码的清晰、可维护和高效。本章将详细介绍如何构建一个有效的 C# 程序。
类与对象
定义类
类是 C# 中的基本构建块之一。类定义了一组属性(变量)和方法(函数),这些属性和方法描述了该类的对象的行为和状态。以下是定义一个简单的类的示例:
// www.javascriptcn.com code example
class Car {
// 属性
public string Make;
public string Model;
public int Year;
// 方法
public void Drive() {
Console.WriteLine("The car is moving.");
}
}创建对象
一旦定义了类,就可以使用 new 关键字创建该类的实例。每个实例都是一个独立的对象,可以有自己的属性值:
Car myCar = new Car(); myCar.Make = "Toyota"; myCar.Model = "Corolla"; myCar.Year = 2022; myCar.Drive(); // 输出:The car is moving.
方法
方法声明
方法是执行特定任务的代码块。它们可以有参数,也可以返回值。方法可以在类内部或外部定义,但通常是在类内部定义的。以下是一个方法的例子:
// www.javascriptcn.com code example
public class Calculator {
public int Add(int a, int b) {
return a + b;
}
public double Divide(double a, double b) {
if (b == 0) throw new ArgumentException("除数不能为零");
return a / b;
}
}方法调用
调用方法时,需要使用对象名和点运算符,后跟方法名和括号中的任何参数:
Calculator calc = new Calculator(); int sum = calc.Add(5, 3); // sum = 8 double result = calc.Divide(10, 2); // result = 5.0
属性
属性定义
属性允许你控制对类成员的访问。它们通常是私有的,但通过公共的 getter 和 setter 方法公开。这有助于封装数据并提供额外的验证逻辑:
// www.javascriptcn.com code example
public class Person {
private string name;
public string Name {
get { return name; }
set {
if (value.Length < 3) throw new ArgumentException("名字太短");
name = value;
}
}
}属性使用
属性的使用方式与公共字段相同,但提供了更多的灵活性和安全性:
Person person = new Person(); person.Name = "Alice"; // 正常 // person.Name = ""; // 抛出异常 Console.WriteLine(person.Name);
构造函数
构造函数定义
构造函数是一种特殊的方法,用于初始化新创建的对象。构造函数的名字必须与类名相同,并且没有返回类型:
// www.javascriptcn.com code example
public class Book {
public string Title;
public string Author;
public Book(string title, string author) {
Title = title;
Author = author;
}
}构造函数调用
当创建对象时,构造函数会自动调用:
Book book = new Book("C# in Depth", "Jon Skeet");
Console.WriteLine(book.Title); // 输出:C# in Depth
Console.WriteLine(book.Author); // 输出:Jon Skeet静态成员
静态字段
静态字段属于类而不是对象。这意味着所有类的实例共享同一个静态字段:
// www.javascriptcn.com code example
public class Counter {
public static int Count = 0;
public Counter() {
Count++;
}
}
Counter c1 = new Counter();
Counter c2 = new Counter();
Console.WriteLine(Counter.Count); // 输出:2静态方法
静态方法也属于类而不是对象。可以通过类名直接调用静态方法,而无需创建类的实例:
public class MathHelper {
public static int Max(int a, int b) {
return a > b ? a : b;
}
}
int max = MathHelper.Max(10, 20); // max = 20命名空间
使用命名空间
命名空间用于组织代码并避免命名冲突。你可以通过 using 指令来引入命名空间:
// www.javascriptcn.com code example
using System;
namespace MyNamespace {
class MyClass {
public void ShowMessage() {
Console.WriteLine("Hello from MyNamespace!");
}
}
}
MyNamespace.MyClass obj = new MyNamespace.MyClass();
obj.ShowMessage();创建命名空间
你也可以自己创建命名空间来组织代码:
namespace MyCustomNamespace {
class CustomClass {
public void Display() {
Console.WriteLine("This is a custom class.");
}
}
}总结
本章介绍了 C# 程序的基本结构,包括类与对象、方法、属性、构造函数、静态成员以及命名空间。理解这些基本概念对于编写结构良好、易于维护的 C# 程序至关重要。在接下来的内容中,我们将深入探讨更多高级主题。