Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将类型int隐式转换为int数组_C#_Arrays_Methods_Compiler Errors_Int - Fatal编程技术网

C# 无法将类型int隐式转换为int数组

C# 无法将类型int隐式转换为int数组,c#,arrays,methods,compiler-errors,int,C#,Arrays,Methods,Compiler Errors,Int,我有一个简单的方法。我不明白它为什么会抛出错误。提前谢谢 public static int[] Shift(int[] a) { if (a == null) return -1; ... } 编译器抛出以下错误: 无法将类型int隐式转换为int[] 如果数组为null,则返回int。函数应为int[]。您可以返回null或空白数组。您试图返回和int,但您的方法需要int数组。 在这种情况下,您想退回什么 您可以返回一个空数组 return n

我有一个简单的方法。我不明白它为什么会抛出错误。提前谢谢

 public static int[] Shift(int[] a) 
 {    
       if (a == null) return -1;
       ...
 }
编译器抛出以下错误:

无法将类型
int
隐式转换为
int[]


如果数组为null,则返回int。函数应为int[]。您可以返回null或空白数组。

您试图返回和int,但您的方法需要int数组。 在这种情况下,您想退回什么

您可以返回一个空数组

return new int[]{};
或包含-1的数组

return new int[]{-1};


由于您的
static
方法定义为具有
int[]
返回类型,因此您的返回类型必须是int数组,而不是int。与任何对象一样,这可以是
null
,但根据您的使用情况,空数组可能更好,避免调用方出现空引用异常。

值-1不是int数组,因此不能作为int数组返回。如何返回int数组?我刚开始学习C#教程。如果a==null是一个错误条件,您可以抛出一个异常,或者返回null更改方法签名以返回一个“int”值,如果您刚刚开始,这里有一篇关于调试的非常好的文章。这似乎是一篇评论,而不是一个答案。考虑到您可能希望包含两个示例,以演示如何返回null或空数组。否则,这是一个很好的答案:简洁明了,切中要害。除非你能帮忙,否则你不应该发送空数组。但如果必须检查,则可以查看返回数组是否为null,而不是数组[0]=-1;或者如果数组为空,则为array.length>0@马里奥:你是说空的吗?“null”和空数组之间存在差异。我认为,设计明智,返回空将是更好的选择。@马里奥考虑这种方法的意图。它返回源数组的一个副本,其所有元素都已移位。在
null
的情况下,将
null
移位是没有意义的,因此只需返回'null'。对于空数组,没有要移位的元素,因此返回空数组。@Mario我建议的另一种方法是将参数数组视为
ref
,并避免返回任何内容。这样,您就可以直接操作源数组,而不必担心每次调用此方法时都会分配一个全新的数组。(当然,除非您打算复制阵列。)
 public static int[] Shift(int[] a) 
 {    
       if (a == null) return null;
       ...
 }
 public static int[] Shift(int[] a) 
 {    
       if (a == null) return new int[]{};
       ...
 }