0

我在遗留代码中遇到了一个结构,我觉得应该将其重新定义为一个类。它不符合在类和结构之间进行选择的一般准则。

当我在这里时,我想更好地了解包含具有引用类型参数的方法(例如接口)的结构在任何情况下是否可能由于装箱和拆箱而降低效率?

我的理解是,值类型在转换为引用类型或它们实现的接口时被装箱,而在转换回值类型时被取消装箱,但我不清楚在结构的方法中使用引用类型的含义。

给定一个结构和一个静态类:

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);
4

1 回答 1

0

引用类型不能装箱,只有值类型可以。我不认为方法中局部变量和参数的内存分配与方法是在引用类型还是值类型中声明有任何关系。

于 2021-07-02T20:42:58.140 回答