相关疑难解决方法(0)

何时使用struct?

什么时候应该在C#中使用struct而不是class?我的概念模型是当项只是值类型的集合时使用结构.一种逻辑上将它们组合在一起形成一个有凝聚力的整体的方法.

我在这里遇到了这些规则:

  • 结构应该表示单个值.
  • 结构应具有小于16个字节的内存占用.
  • 创建后不应更改结构.

这些规则有效吗?结构在语义上意味着什么?

c# struct

1347
推荐指数
23
解决办法
26万
查看次数

在C#中销毁一个struct对象?

我有点困惑的是,在C#中只有引用类型被垃圾收集.这意味着GC只选择内存解除分配的引用类型.那么值类型会发生什么呢?因为它们也会占用堆栈上的内存?

c# struct garbage-collection

21
推荐指数
3
解决办法
9285
查看次数

结构是否比类"更快" - 一般情况下还是在.NET框架中?

由于结构是值类型,因此在将数据作为参数传递给方法时会复制它们的数据.例:

int someInt = 7;

DoSomeMethod(someInt); // <-- This is passing the "value" 7.
Run Code Online (Sandbox Code Playgroud)

到目前为止,很容易理解,你可能想知道我的问题是如何有效的......所以请考虑以下几点:

public struct TimmysStructOfGoodness
{
    public int SomeInt1;
    public int SomeInt2;
    public int SomeInt3;
    // ... later that day ...
    public int SomeInt999;
}
Run Code Online (Sandbox Code Playgroud)

然后,参考以下代码:

TimmysStructOfGoodness someStructOfGoodness = new blah blah blah...

DoSomeMethod(someStructOfGoodness); // <-- **HERE IS WHERE THE QUESTION APPLIES!**
Run Code Online (Sandbox Code Playgroud)

上面的语句是否试图分配几个内存来"复制"我的值类型(struct)?

如果答案是肯定的 - 那么何时/哪里是"更快"和"更慢"之间的界线?

如果不是 - 那为什么不呢?因为我所知道的价值类型,这应该是一个问题.

主要免责声明:我知道这与你为什么要使用一个类的结构无关,而且我知道我永远不会用999个字段创建一个结构 - 这只是一个基本的内部和内部等问题: )

.net memory-management data-structures

17
推荐指数
3
解决办法
5079
查看次数

struct vs class

这适用于.NET.我正在寻找一个空间映射应用程序.内存中将同时存在多个多边形(大约30-50个多边形).每个polgon都有一系列LatLong点.每个多边形的集合范围可以从10到200.但是,有很多计算将使用这些点来完成,这就是为什么(为了性能)我想让LatLong成为一个结构.但是我厌倦了大量的LatLong会在内存中.对此的任何见解将不胜感激.回顾一下:我想知道我是否将LatLong作为一个结构,因为我想要计算性能,或者一个类,因为将在内存中的latLongs数量为1.

.net performance

3
推荐指数
1
解决办法
1689
查看次数