C#类和结构简单介绍("C# 类与结构入门详解")

原创
ithorizon 6个月前 (10-20) 阅读数 19 #后端开发

C# 类与结构入门详解

一、C# 类与结构的概述

C# 是一种面向对象的编程语言,它提供了类(Class)和结构(Structure)两种数据结构来封装数据和行为。类和结构在C#中都是用来创建自定义类型的,但它们在内存分配、继承和默认行为方面有所不同。

二、类的定义与使用

类是引用类型,用于创建对象。在C#中,类可以包含属性、方法、事件、索引器、运算符等成员。下面是一个易懂的类的定义示例:

public class Person

{

public string Name { get; set; }

public int Age { get; set; }

public Person(string name, int age)

{

Name = name;

Age = age;

}

public void Introduction()

{

Console.WriteLine($"Hello, my name is {Name} and I am {Age} years old.");

}

}

在上面的示例中,我们定义了一个名为 Person 的类,它包含两个属性(NameAge),一个构造函数和一个方法(Introduction)。接下来,我们可以创建 Person 类的实例并使用它:

Person person = new Person("张三", 30);

person.Introduction(); // 输出: Hello, my name is 张三 and I am 30 years old.

三、结构的定义与使用

结构是值类型,用于封装轻量级的数据。与类相比,结构通常用于即易懂的数据结构,例如坐标点、颜色等。下面是一个易懂的结构的定义示例:

public struct Point

{

public int X;

public int Y;

public Point(int x, int y)

{

X = x;

Y = y;

}

public void Display()

{

Console.WriteLine($"Point ({X}, {Y})");

}

}

在上面的示例中,我们定义了一个名为 Point 的结构,它包含两个字段(XY)和一个构造函数。创建结构实例的行为与创建类实例类似,但请注意,结构是值类型,所以复制结构实例时,实际上是复制了数据:

Point point1 = new Point(10, 20);

Point point2 = point1; // 复制结构实例

point2.X = 30; // 修改point2的X值,point1不受影响

point1.Display(); // 输出: Point (10, 20)

point2.Display(); // 输出: Point (30, 20)

四、类与结构的区别

下面是类与结构的核心区别:

  • 内存分配:类是引用类型,它在堆上分配内存;结构是值类型,它在栈上分配内存。
  • 继承:类可以继承另一个类(除了 System.ValueType),而结构不能继承。
  • 默认值:类的默认值为 null,而结构的默认值是其实例类型的默认值(例如,数值类型的默认值是0,引用类型的默认值是 null)。
  • 封送处理:结构通常更适合用于封送处理(Marshaling),基于它们是值类型,可以直接在内存中操作。

五、何时使用类和结构

以下是一些涉及何时使用类和结构的指导原则:

  • 如果数据结构较大或需要继承,应使用类。
  • 如果数据结构较小且不需要继承,应考虑使用结构。
  • 如果数据结构用于方法的返回值,并且期望返回值的副本而不是引用,应使用结构。
  • 如果数据结构用于频繁的封送处理,应使用结构。

六、类的成员

类的成员包括以下几种类型:

  • 字段(Field):用于存储数据。
  • 属性(Property):提供对字段的访问和修改,具有更好的封装性。
  • 方法(Method):用于执行操作。
  • 事件(Event):用于响应和触发操作。
  • 索引器(Indexer):提供对类实例的元素访问,类似于数组。
  • 运算符(Operator):允许对自定义类型的实例进行运算符重载。
  • 构造函数(Constructor):用于初始化类实例。
  • 析构函数(Destructor):用于执行类实例的清理工作。

七、结构的成员

结构的成员与类类似,但有一些制约:

  • 结构不能继承。
  • 结构不能定义析构函数。
  • 结构通常不包含事件。
  • 结构不能作为基类。

八、总结

C# 类和结构是两种强势的工具,它们允许我们创建自定义类型,封装数据和行为。了解它们的区别和使用场景对于编写高效和可维护的代码至关重要。在实际开发中,应选择具体需求选择使用类或结构,以约为最佳的性能和灵活性。

以上是一篇涉及C# 类与结构入门详解的文章,使用HTML标签编写,其中包含了代码示例和详细说明。文章内容涵盖了类和结构的基本概念、定义与使用、区别、使用场景以及类和结构的成员类型。

本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门