BerggreenDK
BerggreenDK

Reputation: 5004

C# syntax to initialize custom class/objects through constructor params in array?

I have a class with minimum 4 variables and I have made a constructor for the class so that I can initialize it with

MyClass testobj = new MyClass(1234,56789,"test text", "something else", "foo");

Works fine.

Then I have an array of these, that I need to parse in a loop, so I would like to get some static data into this array.

My approach was:

MyClass[] testobjlist = new MyClass 
{
     new MyClass(1001,1234,"Text 1", "abcdefghijklm", "ding"),
     new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
     new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
};

but somehow this gives me a weird error about me needing an extra } ???

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS1513: } expected

Source Error:

Line 151: }
Line 152: }
Line 153:}

I don't know if I should mention this, but I use it for webpages using Razor-engine 2. But I think this is an ordinary C# question?

My workaround is currently to initialize the array with a size, then adding the elements one by one through index, but I would rather prefer the above solution as I might have to move the items up and down in order when testing and I have a lot more than 3 in the real data.

Wondering what I am missing in the above code?

Upvotes: 32

Views: 110470

Answers (8)

user16372305
user16372305

Reputation: 1

MyClass[] testobjlist = new MyClass[] 
{
     new MyClass(1001,1234,"Text 1", "abcdefghijklm", "ding"),
     new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
     new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
};

Or

MyClass[] testobjlist =
{
     new MyClass(1001,1234,"Text 1", "abcdefghijklm", "ding"),
     new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
     new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
};

Upvotes: -1

Hari Lakkakula
Hari Lakkakula

Reputation: 307

You can use below code for the array:

additionalusers[] __adiitonaluser =
{
    new additionalusers()
};
__adiitonaluser[0].Email = Userpersonal.Email;

Upvotes: 0

Hasala Senevirathne
Hasala Senevirathne

Reputation: 67

MyClass[] testobjlist = new MyClass[noOfObjects];
for(int i = 0; i < testobjlist.Length; i++) { testobjlist[i] = new MyClass(); }

Upvotes: 1

ahaliav fox
ahaliav fox

Reputation: 2257

this will also work without a need to create a constructure

new MyClass [] { new MyClass { Field1 = "aa", Field2 = 1 } } 

Upvotes: 6

Nitin Rajurkar
Nitin Rajurkar

Reputation: 21

MyClass[] testobjlist = 
    {
     new MyClass(1001,1234,"Text 1", "abcdefghijklm", "ding"),
     new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
     new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
    };

Upvotes: 1

Ben Sewards
Ben Sewards

Reputation: 2661

Shorthand for the win:

var myClassList = new[]
{
    new MyClass(1001,1234,"Text 1", "abcdefghijklm", "ding"),
    new MyClass(1002,2345,"Text xx", "bla bla", "dong")
};

Upvotes: 9

Eric Beaulieu
Eric Beaulieu

Reputation: 1064

Try adding square brackets after new MyClass and a semi-colon at the end

    MyClass[] testobjlist = new MyClass[] 
        {
         new MyClass(1001,1234,"Text 1", "abcdefghijklm", "ding"),
         new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
         new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
        };

Upvotes: 46

Kirk Woll
Kirk Woll

Reputation: 77616

You want:

MyClass[] testobjlist = new MyClass[] { ... }

You were missing the brackets toward the end.

Upvotes: 3

Related Questions