Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1409 of 1492 menu
◀ ▶

Conditional

Conditional ставят на void-метод без возвращаемого значения. Символ ABCDE в примере не задают - вызов исчезает при компиляции, флаг остаётся false.

Синтаксис

[Conditional("ABCDE")] static void Mark() { }

Пример

Давайте вызвать условный метод без символа ABCDE:

using System; using System.Diagnostics; class Program { static bool touched; [Conditional("ABCDE")] static void Mark() { touched = true; } static void Main() { Mark(); bool res = touched; Console.WriteLine(res); } }

Результат выполнения кода:

False

Пример

Давайте прочитать имя символа из атрибута:

using System; using System.Diagnostics; using System.Reflection; class Program { [Conditional("ABCDE")] static void Mark() { } static void Main() { MethodInfo method = typeof(Program).GetMethod( "Mark", BindingFlags.Static | BindingFlags.NonPublic); ConditionalAttribute item = method .GetCustomAttribute<ConditionalAttribute>(); string res = item.ConditionString; Console.WriteLine(res); } }

Результат выполнения кода:

"ABCDE"

Пример

Давайте проверить, что метод помечен Conditional:

using System; using System.Diagnostics; using System.Reflection; class Program { [Conditional("ABCDE")] static void Mark() { } static void Main() { MethodInfo method = typeof(Program).GetMethod( "Mark", BindingFlags.Static | BindingFlags.NonPublic); bool res = method.IsDefined(typeof(ConditionalAttribute), false); Console.WriteLine(res); } }

Результат выполнения кода:

True

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить