Что такое [] в С#?

Например:

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

[TestFixtureSetUp] в этом примере, что он делает? По моему опыту, [] обычно ссылается на списки.

Ответы

Ответ 1

Атрибуты. Это способ добавить метаданные о методах/свойствах/интерфейсах/классах/пространствах имен для во время выполнения.

В этом примере к методу добавляется TestFixtureSetUpAttribute. Это позволяет тестировщику определить, какой метод в вашем классе будет выполняться при настройке текстового прибора.

Тест-бегун загружает тестовую сборку в память во время выполнения. Затем он перечисляет классы, определенные в вашей сборке, которые были отмечены определенным атрибутом (независимо от того, что NUnit использует для обозначения тестового класса). Бегун теперь знает, какие классы должны создавать экземпляры для запуска тестов. Затем он просматривает методы, определенные в классе, для метода, который будет запускаться для настройки тестового прибора. Он ищет каждый метод для атрибута, о котором вы просили. Когда он найдет этот метод, он знает, как запустить этот метод перед запуском тестов/каждого теста (в зависимости от того, что это означает в NUnit).

Атрибуты - все о добавлении информации о методе, который вы можете искать во время выполнения. Это то, что вам нужно, если вам не нужно их, вы не пропустите их, но когда вам нужно, OMFG отлично, что они доступны.

(В С# вы можете опустить "Атрибут" из имени типа. Компилятор знает, что вы говорите, например, "SerializableAttribute", когда вы говорите [Serializable])

Ответ 4

Это атрибут . Подобно MetaData для класса/функции, в которой вы его используете.

Ответ 5

Они называются атрибутами (аналогичными аннотациям Java), и они компилируются в виде метаданных.

Ответ 6

Кажется, вы воссоздаете базовый VB/С# faq, задавая один вопрос одновременно в SO. Чтобы добавить к этому, это действительно хороший способ получить репутацию.

Чтобы ответить на TITLE, [] - это символы, используемые для

  • индекс в массивы
  • заключить атрибут (метаданные) в метод
  • еще одна вещь, которую я не могу запомнить

VB.Net использует символы < > для той же цели в метаданных, но использует() для указания доступа к массиву.
Java использует ведущую "@" для той же цели

Если у вас не было этих специальных символов, компилятор не мог понять, что вы написали. Не знаете, что еще вы хотите знать. Вы хотите знать значение TestFixture?