字节数组上的可选方法参数
本文关键字:方法 参数 字节数 数组 字节 | 更新日期: 2023-09-27 18:17:31
如何为字节数组参数设置默认值?下面的代码不能工作…
public static void init(SomeByteArray[] = {1, 2, 3, 4}) {
//Do Something
}
这可能吗?
我在。net Micro Framework 4.1中这样做,如果它有任何区别…
From MSDN:
默认值必须是下列表达式类型之一:
- 一个常量表达式;
- new ValType()形式的表达式,其中ValType是值类型,例如枚举或结构体;
- 形式默认的表达式(ValType),其中ValType是值类型。
所以数组实例不能作为默认值。
最好的解决方案可能是定义两个重载,如下所示:public static void Init()
{
Init(new byte[] { 1, 2, 3, 4 });
}
public static void Init(byte[] data)
{
...
可以,但需要在方法中分配,默认值必须是null
,如下所示:
public static void init(byte[] SomeByteArray = null)
{
SomeByteArray = SomeByteArray ?? new byte[] {1, 2, 3, 4};
//carry on with your method.
}
你不能那样做。默认形参必须是编译时常量,不幸的是数组不是。
但是,您可以这样做:
public static void init(byte[] SomeByteArray = null) {
SomeByteArray = SomeByteArray ?? new byte[] { 1, 2, 3, 4 };
// Do Something
}
或:
public static void init() {
init(new byte[] { 1, 2, 3, 4 });
}
public static void init(byte[] SomeByteArray) {
// Do Something
}
尝试:
public class MyClass {
private readonly int[] _default = new[] { 1, 2, 3, 4 };
public static void init(int[] myArray = null) {
if (myArray == null) {
// Don't modify _default to ensure thread safe
myArray = _default;
}
//Do Something
}
}