相关疑难解决方法(0)

何时使用struct?

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

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

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

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

c# struct

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

我什么时候应该使用结构而不是类?

MSDN说你应该在需要轻量级对象时使用结构.当结构比类更可取时,还有其他任何情况吗?

有些人可能忘记了:

  1. 结构可以有方法.
  2. 结构不能被继承.

我理解结构和类之间的技术差异,我只是对使用结构没有很好的感觉.

.net oop

295
推荐指数
9
解决办法
7万
查看次数

我应该使用结构或类来表示Lat/Lng坐标吗?

我正在使用地理编码API,需要将返回点的坐标表示为纬度/经度对.但是,我不确定是否为此使用结构或类.我最初的想法是使用一个结构,但它们似乎在C#中通常不赞成(例如,Jon Skeet 在这个答案中提到"我几乎从不定义自定义结构").性能和内存使用不是应用程序中的关键因素.

到目前为止,我已经基于一个简单的接口提出了这两个实现:

接口

public interface ILatLng
{
    double Lat { get; }
    double Lng { get; }
}
Run Code Online (Sandbox Code Playgroud)

LatLng类实现

public class CLatLng : ILatLng
{
    public double Lat { get; private set; }
    public double Lng { get; private set; }

    public CLatLng(double lat, double lng)
    {
        this.Lat = lat;
        this.Lng = lng;
    }

    public override string ToString()
    {
        return String.Format("{0},{1}", this.Lat, this.Lng);
    }

    public override bool Equals(Object obj)
    {
        if (obj == null)
            return …
Run Code Online (Sandbox Code Playgroud)

.net c# struct geocoding

37
推荐指数
2
解决办法
2万
查看次数

C++中的结构与类

什么时候应该有人在C++中使用结构而不是类,反之亦然?当一个完整的类管理一些信息似乎有点过分,但我想发现自己使用结构,但是想表明所包含的信息都是相关的.我想知道什么是一个好的指导方针,能够分辨哪一个比另一个更合适?

编辑:在阅读材料时发现这些链接在提交问题后,指示的Stack Overflow是相关的:

什么时候应该在C++中使用类vs结构?
C++中struct和class之间有什么区别?

c++ class

22
推荐指数
2
解决办法
4536
查看次数

C#为什么需要struct,如果类可以覆盖它?

只是想知道为什么我们需要struct如果类可以做所有结构可以和更多?我认为,在类中放置值类型没有副作用.

编辑:看不到使用struct的任何强有力的理由

结构类似于类,具有以下主要区别:

  • 结构是值类型,而类是引用类型.
  • 结构不支持继承(除了隐式派生自对象).
  • 结构可以包含类可以包含的所有成员,但以下内容除外:
  • 无参数构造函数
  • 终结者
  • 虚拟会员

当需要值类型语义时,使用结构而不是类.结构的好例子是数字类型,其中赋值复制值而不是引用更自然.因为struct是值类型,所以每个实例都不需要实例化堆上的对象.在创建类型的许多实例时,这很重要.

c# struct

16
推荐指数
2
解决办法
5348
查看次数

标签 统计

c# ×3

struct ×3

.net ×2

c++ ×1

class ×1

geocoding ×1

oop ×1