#c# #.net-core #c#-8.0
#c# #.net-ядро #c #-8.0
Вопрос:
Я экспериментирую с [CallerArgumentExpression] в C # 8:
static void Main(string[] args)
{
try
{
Program query = null;
Argument(query != null, "Ooops");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
public static void Argument(bool condition, string message, [CallerArgumentExpression("condition")] string conditionExpression = null)
{
if (!condition) throw new ArgumentException(message: message, paramName: conditionExpression);
}
Однако я не могу получить значение conditionExpression
, отличное от null .
Я использовал это https://blog.mcilreavy.com/articles/2018-08/caller-argument-expression-attribute и еще несколько страниц, и, конечно, хороша как путеводитель, но я не могу заставить ее работать.
Комментарии:
1. Еще не реализовано , даже в C # 9.
Ответ №1:
Эта страница https://www.c-sharpcorner.com/article/c-sharp-8-features / утверждает, что он так и не добрался до C # 8 и теперь является C # Next.
Смотрите также https://github.com/dotnet/csharplang/issues/287 особенно в нижней части.
Комментарии:
1. Похоже, это произойдет в C # 10. (Примерно в ноябре, так что всего через несколько недель)
Ответ №2:
Эта функция была реализована в компиляторе Roslyn, который поддерживает C # 10, даже если вы не используете C # 10.