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 an array of ValueTuples?
Try to create an instance of array with new
and instances of tuple with new
keyword
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:
Right now all declarations from the question and this answer works fine with Rider 2017.1 build #RD-171.4456.1432 and .NET Core 1.0.4. The simplest one is that @ZevSpitz mentioned in comments and it looks as follows:
private static readonly (string, string)[] test = {("foo", "bar"), ("baz", "foz")};
There is no need to add specific type for ValueTuple
. Notice that for .NET Core the NuGet package System.ValueTuple
has to be installed.
You can create a new tuple like this
var logos = new (string Name, string Uri)[]
{
("White", "white.jpg"),
("Black", "black.jpg"),
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With