C#中的字节数组是否可以使用“别名”?

Ren*_*Pet 3 c#

我想调用一个重载的回调方法,该方法可以接受几种不同类型的参数。

string s = "some text";
PerformCallback(s);

int i = 42;
PerformCallback(i);

byte[] ba = new byte[] { 4, 2 };
PerformCallback(ba);
Run Code Online (Sandbox Code Playgroud)

到目前为止没有问题。但是现在我想拥有两种不同类型的字节数组,我们称它们为蓝色字节数组和绿色字节数组。字节数组本身就是字节数组。它们的蓝色和绿色只是一个哲学概念,但是我想写一个重载的回调方法,该方法对两种字节数组有两种不同的重载,以及一种调用两种不同的重载的方式。我非常希望避免使用额外的参数来指示字节数组的颜色,并且我希望避免任何添加封闭类或类似内容的事情,这些都会增加运行时开销。

有任何想法吗?提前致谢。

Jon*_*eet 6

好吧,您可以创建一个包含一个字节数组的结构,然后可能进行隐式转换byte[],这样一来,由于过载等原因,您最终会得到单独的类型。

由于它是一个结构,因此就内存而言不会有任何开销- 运行操作符(或只是构造函数)可能会涉及非常小的开销,但是JIT 至少有可能内联所有内容以使其无法正常运行。我当然不希望它对性能产生重大影响。

(说实话,您可以使其成为一个封闭的类,除非将其用于紧密的循环中,否则您将不太可能注意到任何区别。IMO。性能瓶颈很少出现在我们期望的位置。)