2010-02-10 20 views
15

Per esempio:Cosa sono [] in C#?

[TestFixtureSetUp] 
    public void Init() 
    { 
     GetTestRepo(false); 
    } 

[TestFixtureSetUp] in questo esempio, che cosa fa? Dalla mia esperienza, [] di solito si riferisce alle liste.

risposta

36

Attributes. Sono un modo per add metadata su metodi/proprietà/interfacce/classi/spazi dei nomi per inspection at runtime.

L'esempio aggiunge TestFixtureSetUpAttribute a un metodo. Ciò consente al test runner di determinare quale metodo nella propria classe eseguire quando si imposta un dispositivo di testo.

Il test runner carica il test in memoria in fase di esecuzione. Quindi enumera attraverso le classi definite all'interno dell'assembly che sono state contrassegnate con un particolare attributo (qualunque sia il nome utilizzato da NUnit per contrassegnare una classe di test). Il corridore ora sa quali classi istanziare per eseguire i test. Quindi esamina i metodi definiti nella classe per un metodo che verrà eseguito per impostare il dispositivo di prova. Cerca ogni metodo per l'attributo che hai chiesto. Una volta trovato quel metodo, sa di eseguire quel metodo prima di eseguire test/ogni test (qualunque cosa significhi in NUnit).

Gli attributi riguardano l'aggiunta di informazioni su un metodo che è possibile cercare in fase di esecuzione. È il genere di cosa in cui se non ne hai bisogno non ti mancano, ma quando hai bisogno di loro, OMFG è fantastico che siano disponibili.

(In C#, è possibile omettere il "attributo" dal nome del tipo. Il compilatore sa che stai parlando, per esempio, "SerializableAttribute" quando si dice [Serializable])

+0

Cosa hai fatto con l'URL lì? Che cosa fa www.google.com/url? Non l'ho visto prima. –

+0

@pdaddy Probabilmente un artefatto dalla mia ricerca. Aggiustato. – Will

1

E 'un attribute. Un po 'come MetaData per la classe/funzione su cui lo usi.

0

Vengono chiamati attributi (analoghi alle annotazioni Java) e vengono compilati come metadati.

-1

Sembra che si stia ricreando un faq di base VB/C# ponendo una domanda alla volta in SO. Per aggiungere a ciò, sembra essere un buon modo per ottenere la reputazione.

Per rispondere titolo, [] sono i simboli utilizzati per

  • indice in array
  • racchiudono un attributo (metadati) su un metodo
  • un'altra cosa Non ricordo

VB.Net utilizza i caratteri <> per lo stesso scopo sui metadati, ma usa() per indicare l'accesso dell'array.
Java utilizza un "@" iniziale per lo stesso scopo

Se non si disponevano di quei caratteri speciali, il compilatore non poteva interpretare ciò che si scriveva. Non sei sicuro di cos'altro vuoi sapere. Vuoi sapere il significato di TestFixture?

+0

Dovrebbe mettere molte domande in una invece? – EricSchaefer

+2

Dovrebbe leggere una faq. Google il * titolo * delle sue domande, troverete la risposta nel primo colpo o due. Per non parlare del fatto che la risposta effettiva data non corrisponde alla domanda, e la domanda in realtà non si riferisce al titolo. –

+5

Sembra che stiate mettendo dei commenti dove vanno le risposte, prova a leggere le FAQ. –