声明一个(可空)双打数组?

时间:2018-01-26 09:33:55

标签: c#

我有这个声明:

double?[] x = 0;

我不知道如何宣布零,因为这似乎不是正确的方法。

它说:

  

无法隐式转换类型' int'到'加倍?[]'

我在互联网上搜索了一个解决方案,但我找到的所有内容都没有帮助我。有什么建议吗?

3 个答案:

答案 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.00D将被假定为双倍,因此:

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而不是可以为空的版本。