我在遗留代码中遇到了一个结构,我觉得应该将其重新定义为一个类。它不符合在类和结构之间进行选择的一般准则。
当我在这里时,我想更好地了解包含具有引用类型参数的方法(例如接口)的结构在任何情况下是否可能由于装箱和拆箱而降低效率?
我的理解是,值类型在转换为引用类型或它们实现的接口时被装箱,而在转换回值类型时被取消装箱,但我不清楚在结构的方法中使用引用类型的含义。
给定一个结构和一个静态类:
public struct Foo {
public static string ResolveSomething(IBar someInterface, int baz) {
return someInterface.Calculate(baz);
}
}
public static class FooClass {
public static string ResolveSomething(IBar someInterface, int baz) {
return someInterface.Calculate(baz);
}
}
结构与类的以下使用是否对内存使用有任何一般影响?
Foo.ResolveSomething(someImplementation, 2);
FooClass.ResolveSomething(someImplementation, 2);