Combining multiple attributes in C#
Is there a functional difference between the following syntax...
[Foo, Bar]
public class Baz {}
...and this syntax?
[Foo]
[Bar]
public class Baz {}
Assuming each prod开发者_Python百科uces identical results when compiled, which is the preferred form?
There is no functional difference. It's a question of convenience and style.
Most often, I tend to see attributes on their own lines as a way to keep them separate and easy to read. It's also nice to be able to use the line comment //
to remove attributes individually.
[A]
[B]
//[C] disabled
public class Foo {}
From a readability standpoint separate attributes are preferred.
Think about the case where you are passing some type of parameter
[Foo(typeof(int)), Bar(typeof(decimal), MessageTemplate="Bar")]
versus
[Foo(typeof(int))]
[Bar(typeof(decimal), MessageTemplate="Bar")]
I would also argue, if you could combine them into one, they should be one tag.
I typically stack attributes. But I also mainly use these with WCF where the parameter list can get pretty big.
[OperationContract()]
[WebGet(...)]
string MyMethod(string input);
精彩评论