我如何为字节数组参数设置默认值?下面的代码不起作用...
public static void init(SomeByteArray[] = {1, 2, 3, 4}) {
//Do Something
}
这可能吗?
我在 .Net Micro Framework 4.1 中执行此操作,如果有任何不同...
我如何为字节数组参数设置默认值?下面的代码不起作用...
public static void init(SomeByteArray[] = {1, 2, 3, 4}) {
//Do Something
}
这可能吗?
我在 .Net Micro Framework 4.1 中执行此操作,如果有任何不同...
来自MSDN:
默认值必须是以下表达式类型之一:
- 一个常量表达式;
- new ValType() 形式的表达式,其中 ValType 是值类型,例如枚举或结构;
- default(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
}
}