如何在C#中返回数组文字


87

我正在尝试以下代码。指出有错误的行。

int[] myfunction()
{
    {
      //regular code
    }
    catch (Exception ex)
    {                    
       return {0,0,0}; //gives error
    }
}

如何返回像字符串文字一样的数组文字?


4
C#实际上没有数组文字,而是数组初始化语法(接受的答案所指)也毫无价值。文字的特殊之处在于它们可以直接序列化,并且可以分配给const字段。数组初始化语法不是这种情况。
cwharris

Answers:


164

返回这样的数组int

return new int [] { 0, 0, 0 };

您也可以隐式键入数组-编译器将推断它应该是int[]因为它仅包含int值:

return new [] { 0, 0, 0 };

6
哇,我不知道您可以隐式地键入数组!+1
克里斯·辛克莱

1
我发现这new int [] {0,0,0}也有效。我认为这会更清楚。
斯加格2014年

3
@sgarg这似乎与答案相同。我不同意,数组的隐式键入意味着将常量更改为浮点将自动获得正确的数组类型。
NetMage

12

Blorgbeard是正确的,但您也可能考虑使用针对.NET 4.0 Tuple类的新类。我发现当您要退回一定数量的物品时,使用它会更容易。就像您始终需要在数组中返回3个项目一样,一个3 int的元组可以清楚地表明它是什么。

return new Tuple<int,int,int>(0,0,0);

或简单地

return Tuple.Create(0,0,0);

2
如果您有可变数量的项目,但想要一些额外的功能,则也可以执行以下操作:return new List<int>(new int[]{0,0,0});
Dave

1
@Dave会List<int>(Enumerable.Repeat(0, 3))更好吗?
NetMage

@NetMage当然,如果您想更改项目数,会更好。
戴夫

9

如果数组的大小固定,并且您要返回一个新的零填充的数字

return new int[3];
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.