为什么我使用:
struct MyStruct
{
[FieldOffset (0)] public uint Data;
[FieldOffset (0)] public byte Something;
}
public MyStruct (uint pData)
{
Data = pData; // setting Data field also sets Something field
}
Run Code Online (Sandbox Code Playgroud)
C#说我需要分配'Something'字段:/我知道我可以做一个"构造函数:this()"但是编译器应该知道'Data'字段包含'Something'字段.
所以,我应该先调用无参数构造函数,这是唯一的方法吗?
是的,您需要调用默认构造函数.
public MyStruct (uint pData) : this()
{
//...
}
Run Code Online (Sandbox Code Playgroud)
然后,编译器将在构造函数的开头生成以下IL指令:
ldarg.0 // Push address of struct onto stack
initobj MyStruct // Pop address of struct and initialize it with "all zeros"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
957 次 |
| 最近记录: |