-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
Migrated from dotnet/roslyn#12496
Proposal
Allow trailing commas in method/constructor declarations and invocations.
void Foo(
int bar,
int baz,
) { }
Foo(
bar: 5,
baz: 3,
);Rational
One very small but appreciated feature in C# is the tolerance of the compiler for trailing commas in array initialization or object initialization:
var a = new int[]
{
3,
4,
5,
};
var b = new
{
Bark = "woof",
Bite = "chomp",
}This makes it easier to reorder or edit the item order without taking time to make sure that last comma gets deleted.
It would be nice if this feature also extended to method signatures and invocation. It would be especially useful in the post C# 4.0 where named parameters can be reordered or used to make a highly descriptive method call.
Example
void Foo (int bar, String baz, Func<int> cat, Action<String> dot, int elf) { }
Foo(
bar: 5,
baz: "",
cat: () => 6,
);Wait, having cat last is confusing, let me place it after bar...
//Rather than just copy and paste the relevant line...
Foo(
bar: 5,
cat: () => 6, //Now I need to add this comma here!
baz: "" //And I need to remove this comma here!
);Instead, if method invocations were also tolerant of an extra comma, it would make editing easier:
Foo(
bar: 5,
cat: () => 6,
baz: "", //Extra comma here, it's not hurting anyone!
);Final thoughts
TypeScript has and soon JavaScript will have this feature. I think it will work great in C# as well.