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
Смотрите также
-
CallerMemberName,
имя вызывающего -
CallerFilePath,
файл вызывающего -
CallerLineNumber,
строка вызывающего -
Obsolete,
устаревший код