In C# i can write
var y = new List<string>(2) { "x" , "y" };
to get a List with "x" and "y" initialized.
How do I declare a class to accept this initialization syntax?
I mean, I want to write:
var y = new MyClass(2, 3) { "x" , "y" };
    Look at section 7.6.10.3 of the C# spec:
The collection object to which a collection initializer is applied must be of a type that implements System.Collections.IEnumerable or a compile-time error occurs. For each specified element in order, the collection initializer invokes an Add method on the target object with the expression list of the element initializer as argument list, applying normal overload resolution for each invocation. Thus, the collection object must contain an applicable Add method for each element initializer.
A very simple example of this:
   class AddIt : IEnumerable
   {
      public void Add(String foo) { Console.WriteLine(foo); }
      public IEnumerator GetEnumerator()
      {
         return null; // in reality something else
      }
   }
   class Program
   {
      static void Main(string[] args)
      {
         var a = new AddIt() { "hello", "world" };
         Console.Read();
      }
   }
This will print "hello", followed by "world" to the console.
I'm not sure what (2,3) are supposed to indicate. I understand that it's your collection size in the first line. You can simply inherit from List or whatever structure you're needing to imitate.
Just tested this sample in LinqPad:
void Main()
{
    var list = new Foo{
        "a",
        "b"
    };
    list.Dump();
}
class Foo : List<string>{ }
    Just initialize the fields of the class using the syntax:
// ...
Car myCar1 = new Car () { Model = "Honda", YearBuilt=2009 };
Car myCar2 = new Car () { Model = "Toyota", YearBuilt=2011 };
// ...
public class Car {
    public string Model;
    public int YearBuilt;
}
    As Marcus points out, the class must implement the IEnumerable interface and have an Add() method accessible to the caller.
In short, this skeleton example will work:
public class MyClass : IEnumerable
{
    public void Add(string item)
    {
    }
    public IEnumerator GetEnumerator()
    {
        throw new NotImplementedException();
    }
}