使用私有类代替字段 - 性能/内存惩罚?

Rec*_*all 28 .net c#

我正在审查某人的代码并遇到了这个私人课程:

class CustomType : Dictionary<int, SomeOtherCustomType>
{
    // This is empty; nothing omitted here
}
Run Code Online (Sandbox Code Playgroud)

然后在整个父类中使用CustomType.这当然很整洁,因为CustomType比

Dictionary<int, SomeOtherCustomType>
Run Code Online (Sandbox Code Playgroud)

我的问题是,为快捷方式设置内部类的性能/内存含义是什么?在性能敏感的应用程序中,这是否有助于(甚至轻微)更高的内存和/或CPU使用率?

Rei*_*ica 50

除非有另一个定义自定义类型的原因,否则我建议将其更改为using语句.

using CustomType = Dictionary<int, SomeOtherCustomType>;
Run Code Online (Sandbox Code Playgroud)

它只是为字典定义了一个别名,如果你正在使用一些复杂的参数化类,它们会非常有用.

这消除了声明新类型的需要,因为当代码站立时,以下将失败.

CustomType dictionary = new Dictionary<int, SomeOtherCustomType>(); //custom type is a different class and can't be instantiated with a dictionary
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用别名,它将起作用.

  • @zimdanen - 无论如何这是一个私人课程. (6认同)
  • @ C4stor如果"答案可以'不要那样做'"([如何回答](http://stackoverflow.com/questions/how-to-answer)),我相信"你专注于错误的方面"也是可以接受的. (5认同)
  • 即使CustomType在其他文件中使用,别名*也应该在每个文件中重复,而不是作为子类型,因为**是别名.您可以认为这是语言中的缺陷,但不应该通过以与现实相矛盾的方式表达代码来解决它:当您说CustomType继承Dictionary <a,b>时,您说的是词典<a,b>*不是*CustomType,这不是真的,只要您决定从类外部接受字典并将其分配给CustomType变量,它就会成为问题. (2认同)

Mik*_*oud 15

它的短期和长期是,没有.该类CustomType根据定义a Dictionary<int, SomeOtherCustomType>,因此将按此分配.

这尤其正确,因为实际上没有该类的实现.

  • 嗯,从技术上讲,它是另一种必须加载的类型,可能只有很小的持续开销.(看来OP在这里非常痴迷.) (6认同)
  • @millimoose,我可以看到它和良好的添加,但正如你所说,它将是非常微小的,因为它将是一次性常数. (2认同)