哪种类型更好 - 类或结构 - 数据模型传递给客户端?

cas*_*rad -6 c# performance asp.net-web-api

我有一个标准的Web API应用程序.让我们假设在一个动作中我想返回这样的响应:

public IHttpActionResult GetSomething()
{
    var model = new Domain.OutcomingModels.Action[1];
    return Ok(model);
}
Run Code Online (Sandbox Code Playgroud)

对于model我可以指定为a class或a的对象struct.从我的角度来看,没有理由喜欢structclass,就性能.

该应用程序将每秒处理数百万客户端的请求.我关心的事情:

  • 是时候在struct上创建类了
  • 类或结构上的内存消耗
  • 是时候将对象传递给将返回IHttpActionResult的方法
  • 将对象传递给此类方法的内存消耗
  • 序列化的时间
  • 堆碎片整理的可能问题
  • 一般垃圾收集器可能存在的问题

我对吗?

问题不在于类和结构之间的一般差异.它是将它们与类似OkBadRequest将C#对象转换为序列化对象的方法一起使用.我在问可能的警告.

D S*_*ley 8

该模型将转换为JSON或XML并返回给客户端.

JSON和XML都没有区分类和结构,所以从这个角度来看无论你选择class还是结构都没关系struct.很可能没有有意义的性能差异.

可能是从福利系统的部分使用struct,但是序列化是不是其中之一.

坚持class到你有一个令人信服的理由改变它struct.然后你消除了对可变结构的任何担忧,传递引用/副本,值与引用相等等.

  • @cassandrad我没有回答哪个更好 - JSON或XML.你问`class`或`struct`是否更好,从序列化的角度来看它并不重要. (2认同)