相关疑难解决方法(0)

C#中的通用接口是否可以防止拳击?(.NET vs Mono性能)

我有一个C#接口,其中某些方法参数声明为object类型.但是,传递的实际类型可能因实现接口的类而异:

public interface IMyInterface
{
    void MyMethod(object arg);
}

public class MyClass1 : IMyInterface
{
    public void MyMethod(object arg)
    {
        MyObject obj = (MyObject) arg;
        // do something with obj...
    }
}

public class MyClass2 : IMyInterface
{
    public void MyMethod(object arg)
    {
        byte[] obj = (byte[]) arg;
        // do something with obj...
    }
}
Run Code Online (Sandbox Code Playgroud)

MyClass2的问题在于转换byte[]和转换object装箱和拆箱,这是影响性能的计算上昂贵的操作.

通用接口解决这个问题会避免装箱/拆箱吗?

public interface IMyInterface<T>
{
    void MyMethod(T arg);
}

public class MyClass1 : IMyInterface<MyObject> …
Run Code Online (Sandbox Code Playgroud)

c# generics mono performance boxing

5
推荐指数
3
解决办法
5538
查看次数

标签 统计

boxing ×1

c# ×1

generics ×1

mono ×1

performance ×1