c# struct的例子



1.struct结构不能包含显示的无参构造函数

2.struct有参数构造函数必须为所有属性赋值

        public struct MyTest
        {
            // 不能有显示的无参构造函数
            public MyTest()
            {
            }
            public string UserName;
            public int UserAge;
        }

  public struct MyTest
        {
            // 必须被完全赋值
            public MyTest(string userName)
            {
                UserName = userName;
            }
            public string UserName;
            public int UserAge;
        }


   public struct MyTest
        {
            // 正确
            public MyTest(string userName,int userAge)
            {
                UserName = userName;
                UserAge = userAge;
            }
            public string UserName;
            public int UserAge;
        }

转自

1.struct结构不能包含显示的无参构造函数

2.struct有参数构造函数必须为所有属性赋值

        public struct MyTest
        {
            // 不能有显示的无参构造函数
            public MyTest()
            {
            }
            public string UserName;
            public int UserAge;
        }

  public struct MyTest
        {
            // 必须被完全赋值
            public MyTest(string userName)
            {
                UserName = userName;
            }
            public string UserName;
            public int UserAge;
        }


   public struct MyTest
        {
            // 正确
            public MyTest(string userName,int userAge)
            {
                UserName = userName;
                UserAge = userAge;
            }
            public string UserName;
            public int UserAge;
        }

转自:
http://blog.youkuaiyun.com/isaisai/article/details/8534331

1.struct结构不能包含显示的无参构造函数

2.struct有参数构造函数必须为所有属性赋值

        public struct MyTest
        {
            // 不能有显示的无参构造函数
            public MyTest()
            {
            }
            public string UserName;
            public int UserAge;
        }

  public struct MyTest
        {
            // 必须被完全赋值
            public MyTest(string userName)
            {
                UserName = userName;
            }
            public string UserName;
            public int UserAge;
        }


   public struct MyTest
        {
            // 正确
            public MyTest(string userName,int userAge)
            {
                UserName = userName;
                UserAge = userAge;
            }
            public string UserName;
            public int UserAge;
        }

### C#struct 的使用方法和相关概念 在 C# 编程语言中,`struct` 是一种值类型,通常用于封装小型的、相关的变量集合。与 `class` 相比,`struct` 有其独特的特性和适用场景。 #### 基本概念 `struct` 是一种值类型,它存储在栈中,并且在传递时会进行深拷贝。这意味着每次将 `struct` 作为参数传递给方法或赋值给另一个变量时,都会创建一个新的副本。这种特性使得 `struct` 在某些特定情况下可以提供更好的性能优化[^1]。 #### 定义和使用 定义一个 `struct` 的语法与定义 `class` 类似,但有一些关键的不同点。以下是一个简单的 `struct` 定义示例: ```csharp public struct Point { public int X; public int Y; public Point(int x, int y) { X = x; Y = y; } public override string ToString() { return $"({X}, {Y})"; } } ``` 在这个例子中,`Point` 是一个包含两个整数字段 `X` 和 `Y` 的 `struct`。它还包含一个构造函数和一个重写的 `ToString()` 方法。 使用 `struct` 时需要注意以下几点: - **不可变性**:由于 `struct` 的复制特性,设计时应尽量保持其不可变性,以避免不必要的副作用[^2]。 - **大小限制**:微软建议不要将大于 16 字节的类型定义为 `struct`,因为这可能导致性能下降[^2]。 #### 适用场景 虽然 `struct` 和 `class` 在定义上相似,但它们的主要区别在于值类型和引用类型的特性。`struct` 适用于以下几种情况: - **小型数据结构**:当需要表示一个小型的、不可变的数据结构时,例如点、矩形等几何图形相关的类型。 - **性能优化**:在某些性能敏感的代码段中,使用 `struct` 可以减少内存分配和垃圾回收的压力。 - **互操作性**:在与非托管代码交互时,`struct` 可以更方便地映射到 C 或 C++ 的结构体[^1]。 #### 示例代码 下面是一个使用 `struct` 的完整示例: ```csharp using System; public struct Rectangle { public int Width; public int Height; public Rectangle(int width, int height) { Width = width; Height = height; } public int Area() { return Width * Height; } public override string ToString() { return $"Width: {Width}, Height: {Height}, Area: {Area()}"; } } class Program { static void Main() { Rectangle rect1 = new Rectangle(5, 10); Console.WriteLine(rect1.ToString()); // 修改 rect1 的宽度 rect1.Width = 15; Console.WriteLine(rect1.ToString()); // 将 rect1 赋值给 rect2 Rectangle rect2 = rect1; rect2.Width = 20; Console.WriteLine($"rect1: {rect1}"); Console.WriteLine($"rect2: {rect2}"); } } ``` 在这个示例中,`Rectangle` 是一个 `struct`,它包含宽度和高度字段,并提供了一个计算面积的方法。`Main` 方法展示了如何创建和修改 `Rectangle` 实例,并演示了值类型的复制行为。 #### 总结 尽管 `struct` 在某些情况下可以提供性能优势,但在大多数情况下,使用 `class` 是更安全的选择。`struct` 的主要缺点是其复制特性可能导致性能问题,特别是在处理大型数据结构时。因此,在设计 `struct` 时应谨慎考虑其适用场景,并遵循微软的最佳实践建议[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值