janzenr wrote:I am under the impression that:
new String[] { "foo", "bar"};
and
new String();
are just constructors. new String(); does not new up to anything, unlike the behavior of the array, right?
new String[] { "foo", "bar"};
allocates and array and assigns elements
new String();
would allocate a String instance, if it actually compiled. It won't compile because there is no default ctor for String (String is immutable, so it wouldn't make much sense).
new Object();
This compiles and creates a new instance of Object. Your "does not new up to anything" statement isn't correct, as far as I understand your words.
janzenr wrote:Also if I pass new String[] { "Foo", "bar"} as a function's parameter, it compiles. Ex:
Console.WriteLine(new String[] { "foo", "bar" });
We still have a problem here.
I don't see the problem. Your example of passing the initialized array as a parameter is a completely different context than your original question, which tries to use the initialized array as a statement unto itself. And *that* is the subject of the error message you get.
As to "why," I'd guess that has something to do with the language spec.