Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Meaning of text between square brackets

Tags:

c#

attributes

I have seen a lot of C# programs that use the [], for example [STAThread] and then the code follows. Another classic example is [DLLImport].

I know what STAThread means but my question is what is the significance of the square brackets, essentially what do they tell the compiler?

like image 240
Anand Shah Avatar asked Apr 21 '09 09:04

Anand Shah


2 Answers

It's an attribute. Attributes are a form of metadata that you can attach to various code elements: classes, methods, assemblies etc.

Some attributes have special meaning to the C# compiler, for instance the [Serializable] probably tells the compiler to emit some code that can serialize an instance of the class (I say 'probably' since I do not know the inner workings of the C# compiler).

You can also create your own attributes (by inheriting System.Attribute). Using reflection you could then at run-time extract information from the attributes.

A simple example would be to create an attribute to specify what kind of input field to use in a HTML form when displaying an object's property.

Some links:

  • Book chapter on attributes
  • Attributes overview (MSDN)
  • https://stackoverflow.com/search?q=C%23+attributes
  • http://www.google.com/search?q=C%23+attributes
like image 90
codeape Avatar answered Oct 14 '22 16:10

codeape


These are attributes.

Attributes have many uses - [Obsolete] marks a method as obsolete and the compiler will warn you. Others like [DebuggerNonUserCode] tell nothing to the compiler and are there to let the debugger know that the code in the marked method is auto-generated.

You can also create your own attributes and use them to mark any kind of metadata. For example, your Customer object might have an attribute [MarketingInformation("Customer is rich! Milk him good!")].

like image 21
Sander Avatar answered Oct 14 '22 17:10

Sander