CallerLineNumber
Номер зависит от разметки файла -
конкретное число в вывод не кладут.
Два вызова на разных строках дают
разные значения. Явный аргумент
остаётся как передан. Имя члена -
CallerMemberName,
файл -
CallerFilePath.
Синтаксис
using System.Runtime.CompilerServices;
void Method([CallerLineNumber] int line = 0)
Пример
Давайте сравнить два вызова на разных строках:
using System;
using System.Runtime.CompilerServices;
class Program
{
static int Show([CallerLineNumber] int line = 0)
{
return line;
}
static void Main()
{
int first = Show();
int second = Show();
bool res = first != second;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте передать номер строки явно:
using System;
using System.Runtime.CompilerServices;
class Program
{
static void Show([CallerLineNumber] int line = 0)
{
Console.WriteLine(line);
}
static void Main()
{
Show(12345);
}
}
Результат выполнения кода:
12345
Пример
Давайте проверить, что подставленный номер положителен:
using System;
using System.Runtime.CompilerServices;
class Program
{
static void Show([CallerLineNumber] int line = 0)
{
bool res = line > 0;
Console.WriteLine(res);
}
static void Main()
{
Show();
}
}
Результат выполнения кода:
True
Смотрите также
-
CallerMemberName,
имя вызывающего -
CallerFilePath,
файл вызывающего -
CallerArgumentExpression,
текст аргумента -
Obsolete,
устаревший код