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

CallerArgumentExpression

Атрибут ставят на параметр, который хранит текст другого аргумента: nameof(condition) указывает, какой параметр снимать. Явно переданная строка подстановку не получает. Имя вызывающего - CallerMemberName, строка - CallerLineNumber.

Синтаксис

using System.Runtime.CompilerServices; void Check( bool condition, [CallerArgumentExpression(nameof(condition))] string text = "")

Пример

Давайте передать выражение 1 == 1:

using System; using System.Runtime.CompilerServices; class Program { static void Check( bool condition, [CallerArgumentExpression(nameof(condition))] string text = "") { Console.WriteLine(text); } static void Main() { Check(1 == 1); } }

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

"1 == 1"

Пример

Давайте передать текст явно:

using System; using System.Runtime.CompilerServices; class Program { static void Check( bool condition, [CallerArgumentExpression(nameof(condition))] string text = "") { Console.WriteLine(text); } static void Main() { Check(true, "abcde"); } }

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

"abcde"

Пример

Давайте сравнить текст с исходным выражением:

using System; using System.Runtime.CompilerServices; class Program { static void Check( bool condition, [CallerArgumentExpression(nameof(condition))] string text = "") { bool res = text == "1 == 1"; Console.WriteLine(res); } static void Main() { Check(1 == 1); } }

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

True

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

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