Somebody tried to fool you. There is no such attribute target as "filed". It will cause the warning: "'filed' is not a recognized attribute location. All attributes in this block will be ignored.".
There is no such keyword. There is a keyword "field". Can you see that this is an absolutely different word with absolutely different meaning (a field is a member of a type)? And I don't know such attribute "Nonserializable", more likely, you mean
NonSerializedAttribute
.
As to the round brackets, they are allowed but absolutely redundant. This is not exactly a normal method call, but this is the way to pass positional parameter to an instance of the attribute class. The parameters are the parameters of the attribute class constructor, as simple as that. For a parameterless constructor, no brackets are needed at all. (And the named arguments are created as the public propertied of an attribute class.)
In certain cases, you need a keyword to disambiguate the target of the attribute application. This is the case where such keyword is needed: "assembly", "field", "parameter", etc. Please see:
http://msdn.microsoft.com/en-us/library/b3787ac0%28v=vs.90%29.aspx[
^].
In the case of
[NonSerialized]
, such qualification is redundant.
—SA