Significado do texto entre colchetes

Eu vi um monte de programas em C # que usam o [] , por exemplo [STAThread] e, em seguida, o código a seguir. Outro exemplo clássico é o [DLLImport] .

Eu sei o que STAThread significa, mas a minha pergunta é qual é o significado dos colchetes, essencialmente o que eles dizem ao compilador?

É um atributo. Atributos são uma forma de metadados que você pode append a vários elementos de código: classs, methods, montagens etc.

Alguns atributos têm um significado especial para o compilador C #, por exemplo, o [Serializable] provavelmente diz ao compilador para emitir algum código que pode serializar uma instância da class (eu digo ‘provavelmente’ já que não conheço o funcionamento interno do compilador C # ).

Você também pode criar seus próprios atributos (herdando System.Attribute ). Usando o reflexo, você poderia, em tempo de execução, extrair informações dos atributos.

Um exemplo simples seria criar um atributo para especificar o tipo de campo de input a ser usado em um formulário HTML ao exibir a propriedade de um object.

Alguns links:

Esses são atributos .

Atributos têm muitos usos – [Obsolete] marca um método como obsoleto e o compilador irá avisá-lo. Outros como [DebuggerNonUserCode] não informam ao compilador e estão lá para informar ao depurador que o código no método marcado é gerado automaticamente.

Você também pode criar seus próprios atributos e usá-los para marcar qualquer tipo de metadado. Por exemplo, seu object Customer pode ter um atributo [MarketingInformation("Customer is rich! Milk him good!")].

Veja aqui informações sobre atributos no .Net:

http://msdn.microsoft.com/pt-br/library/5x6cd29c.aspx

São atributos que adicionam metadados ao que eles estão decorando.

Teses são chamadas de atributos de código. Atributos são usados ​​para marcar o código com propriedades que geralmente são projetadas para especificar o comportamento durante a execução. Eles são comumente usados ​​para marcar methods, propriedades e parâmetros. Durante a execução do seu código, algo chamado “reflection” será executado para examinar o código. Reflection diz ao compilador para observar e obedecer quaisquer instruções especificadas por você como atributos de marcação do codificador contra o código.

Um bom exemplo seria o atributo [Serializable]. Esse atributo, quando marcado acima de uma class, indica ao compilador que ele pode ser serializado para fins de persistência da instância de class ou para transmissão em uma mídia, como serviços da Web SOAP.

Veja o seguinte artigo: link text