Csharp结构体介绍

1.在C#中,结构体是一种值类型,用于封装少量的数据。结构体使用 struct 关键字定义,并且可以包含数据字段、方法、属性、索引器、运算符重载和构造函数。结构体不能继承其他的结构体或类,也不能被其他结构体或类继承。以下是结构体的一些基本特性:

2.定义结构体:

1
2
3
4
5
6
7
8
9
10
11
public struct Point
{
public int X;
public int Y;

public Point(int x, int y)
{
X = x;
Y = y;
}
}

3.实例化结构体:

结构体可以通过直接声明或使用 new 关键字来实例化。

1
2
Point p1 = new Point();
Point p2 = new Point(10, 20);

4.结构体是值类型:

结构体是值类型,所以当它们被赋值给另一个变量时,它们的值会被复制。

5.方法和属性:

结构体可以包含方法和属性,就像类一样。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public struct Rectangle
{
public int Length;
public int Width;

public double Area
{
get { return Length * Width; }
}

public void PrintArea()
{
Console.WriteLine($"Area: {Area}");
}
}

6.运算符重载:

结构体可以重载运算符,以提供自定义的操作。

1
2
3
4
5
6
7
8
9
10
public struct Vector
{
public double X;
public double Y;

public static Vector operator +(Vector a, Vector b)
{
return new Vector(a.X + b.X, a.Y + b.Y);
}
}

7.结构体与类的区别:

结构体是值类型,而类是引用类型。
结构体默认继承自 System.ValueType,而类默认继承自 System.Object。
结构体不能有析构函数,而类可以。
结构体不能实现接口,而类可以。

8.装箱和拆箱:

当结构体被赋值给一个对象类型(比如 object 或接口类型)时,会发生装箱操作,将值类型转换为引用类型。相反的操作称为拆箱。

使用结构体时,通常是为了创建轻量级的、不可变的数据结构,或者当你需要确保数据被复制而不是引用时。

Csharp结构体函数

1.在C#中,结构体(struct)是一种值类型,它可以用来定义轻量级的数据结构。结构体可以包含数据字段、属性、方法和构造函数等。以下是一些关于C#结构体中函数的基本示例:

2.结构体定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public struct Point
{
public int X { get; set; }
public int Y { get; set; }

// 构造函数
public Point(int x, int y)
{
X = x;
Y = y;
}

// 方法
public void PrintCoordinates()
{
Console.WriteLine($"({X}, {Y})");
}

// 重写ToString方法
public override string ToString()
{
return $"Point({X}, {Y})";
}
}

3.使用结构体

1
2
3
Point p = new Point(10, 20);
p.PrintCoordinates(); // 输出: (10, 20)
Console.WriteLine(p.ToString()); // 输出: Point(10, 20)

4.结构体与方法

构造函数:用于初始化结构体的字段。
方法:可以定义方法来执行特定的操作,比如上面的PrintCoordinates方法。
属性:使用get和set块来定义属性,允许外部代码以属性的方式访问结构体的字段。
重写方法:可以重写如ToString等方法,以提供结构体的自定义字符串表示。

5.结构体的值类型特性

结构体是值类型,赋值和参数传递时会复制整个结构体。
结构体不能被继承,但可以实现接口。
结构体默认有Equals、GetHashCode和ToString方法,但通常需要根据需要重写这些方法。

6.结构体与类的区别

类是引用类型,而结构体是值类型。
类可以继承其他类,而结构体不能继承其他结构体或类。
结构体的字段默认为private,而类的字段默认为private。

这些是C#中结构体和函数的基本用法。根据具体需求,你可以在结构体中定义更多复杂的逻辑和方法。