is there a difference between [Serializable] and [Serializable()] in c#?

.net, c#, serialization

Solution

Nope, no functional difference.

Why the 2 different styles, you ask? The first notation is allowed for brevity. The 2nd notation is allowed because some attributes take parameters:

[Category("Foobar related methods.")]
public void Foo()
{
}

Also note that [Serializable] is really just short-hand for [SerializableAttribute()] - C# lets you omit the Attribute suffix as well as the empty constructor parens.

Problem

I've bumped into examples using either of both notations. I can't find anything about it what tells which one is the common one, why 2 notations are allowed, and if there is actually any subtle difference between the two. anyone an idea?

Original source