Creating a System.ValueTuple Array in C # 7

In my code, I have:

private static readonly ValueTuple<string, string>[] test = {("foo", "bar"), ("baz", "foz")};

But when I compile my code, I get:

TypoGenerator.cs(52,76):  error CS1026: Unexpected symbol `,', expecting `)'
TypoGenerator.cs(52,84):  error CS1026: Unexpected symbol `)', expecting `)'
TypoGenerator.cs(52,94):  error CS1026: Unexpected symbol `,', expecting `)'
TypoGenerator.cs(52,103):  error CS1026: Unexpected symbol `)', expecting `)'
TypoGenerator.cs(117,42):  error CS1525: Unexpected symbol `('
TypoGenerator.cs(117,58):  error CS1525: Unexpected symbol `['

What is the correct way to create and initialize a ValueTuples array?

+6
source share
3 answers

Try creating an instance of an array with newand tuple instances with the keywordnew

private static readonly ValueTuple<string, string>[] test = new ValueTuple<string, string>[]{
        new ValueTuple<string, string>("foo", "bar"), 
        new ValueTuple<string, string>("baz", "foz")
};

or with C # 7 tuple syntax

private static readonly ValueTuple<string, string>[] test = new ValueTuple<string, string>[]{
        ("foo", "bar"), 
        ("baz", "foz")
};

Update:

Currently, all the ads with the question and this answer work fine with Rider 2017.1 build # RD-171.4456.1432 and .NET Core 1.0.4. The simplest is that @ZevSpitz is mentioned in the comments and looks like this:

private static readonly (string, string)[] test = {("foo", "bar"), ("baz", "foz")};

There is no need to add a specific type for ValueTuple. Note that for .NET Core, you must install the NuGet package System.ValueTuple.

+6

# 7 ValueTuple:

(int Alpha, string Beta)[] array1 = { (Alpha: 43, Beta: "world"), (99, "foo") };
(int Alpha, string Beta)[] array2 = { (43, "world"), (99, "foo") };
(int, string)[] array3 = { (43, "world"), (99, "foo") };   // Item1, Item2, ...

VS2017

Linq ValueTuples, :

var foo = Enumerable.Range(1,10).Select(z=> (Alpha: 43, Beta: "world")).ToArray();
0

You can create a new tuple like this

var logos = new (string Name, string Uri)[]
{
    ("White", "white.jpg"),
    ("Black", "black.jpg"),
};
0
source

Source: https://habr.com/ru/post/1016249/


All Articles