这是我想写的结构:
public struct AttackTraits
{
public AttackTraits(double probability, int damage, float distance)
{
Probability = probability;
Distance = distance;
Damage = damage;
}
private double probability;
public double Probability
{
get
{
return probability;
}
set
{
if (value > 1 || value < 0)
{
throw new ArgumentOutOfRangeException("Probability values must be in the range [0, 1]");
}
probability = value;
}
}
public int Damage { get; set; }
public float Distance { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这会导致以下编译错误:
在分配所有字段之前,不能使用"this"对象 …
如果我创建一个相对较大的结构,我如何计算它在内存中占用的字节数?
我们可以手动完成,但如果结构足够大,那么我们该怎么做呢?是否有一些代码块或应用程序?
我知道C和C++等语言允许在运行时使用sizeof()函数确定数据的大小(结构,数组,变量......).我在C#中尝试过,显然它不允许将变量放入sizeof()函数中,但只键入defintions(float,byte,Int32,uint等等),我该怎么做呢?
实际上,我希望这种情况发生:
int x;
Console.WriteLine(sizeof(x)); // Output: 4
Run Code Online (Sandbox Code Playgroud)
并不是:
Console.WriteLine(sizeof(int)); // Output: 4
Run Code Online (Sandbox Code Playgroud)
我确信在C#中有一些正常的方法可以在运行时获取数据大小,但谷歌并没有提供太多帮助..这是我最后的希望