我有这个声明:
double?[] x = 0;
我不知道如何宣布零,因为这似乎不是正确的方法。
它说:
无法隐式转换类型' int'到'加倍?[]'
我在互联网上搜索了一个解决方案,但我找到的所有内容都没有帮助我。有什么建议吗?
答案 0 :(得分:14)
double a = 0; // single double
double? b = 0; // single nullable double
double[] c = new double[] { 0 }; // array with a single double
double?[] d = new double?[] { 0 }; // array with a single nullable double
请注意0
此处已将视为作为双字面文字;但更一般地说 - 添加句号或D
; 0.0
或0D
将被假定为双倍,因此:
var e = 0; // single int32
var f = 0.0; // single double
var g = 0D; // single double
var h = new[] { 0D }; // array with a single double
答案 1 :(得分:1)
您正在尝试将整数转换为双精度数组。这不行。 要声明一个数组,请执行以下操作:
double?[] x = {0, 0};
编译器会将整数0转换为double。
答案 2 :(得分:-1)
您正在声明一系列(可空)双打。你不能这样设置一个数组。
如果您只想要一个值,则以下内容完全有效:
double? x = 0;
数组有点不同,这些是多个数字。所以你需要先将它初始化为数组。
double?[] x = new double?[] { 0 };
请注意,上面会生成一个大小为1的数组。
至于可空部分,你期望变量在任何时候都是NULL吗?如果不是,建议使用普通double
而不是可以为空的版本。