c#中结构体structure初始化

本文详细探讨了C#中结构体的基本概念与初始化问题。结构体作为一种值类型,在某些场景下与类(引用类型)有着不同的行为表现。文章通过具体的代码示例说明了结构体成员与属性在初始化过程中的差异,并解释了如何正确地使用结构体。

1. c# structure基本事实

2. 初始化问题

3. 总结


1. c# structure基本事实

c# structure为值类型,和class是相类似,但是c#中的class是引用类型。


2. 初始化问题

下面是两段代码,看上去是相似的,但是其中一段代码是不能够编译的:

public struct StructMember { public int a; public int b; }

public struct StructProperties { private int a; private int b; public int A { get { return a; } set { a = value; } } public int B { get { return b; } set { b = value; } } }

public class MainClass { public static void Main() { StructMembers MembersStruct; StructProperties PropertiesStruct; MembersStruct.X = 100; MembersStruct.Y = 200; PropertiesStruct.X = 100; PropertiesStruct.Y = 200; } }

上面的代码编译出如下错误:

error CS0165: Use of unassigned local variable  'PropertiesStruct

单纯通过c#代码是无法看出错误,通过查看上面代码生成的反汇编,可以看出PropertiesStruct的get方法,需要使用new关键字新生成一个instance。但是MembersStruct生成的汇编代码的话,没有生成method,显然通过这种赋值的方式是能够实现的。


3. 总结

Using the new operator calls the default constructor of the specific type and assigns the default value

to the variable.


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值