Tag Archives: CallerArgumentExpression

C# 10 Yenilikleri – CallerArgumentExpression attribute kullanımı

C# 10 ile gelen yeniliklerden biri de CallerArgumentExpression attribute kullanımı.

CallerArgumentExpression attribute kullanımı size parametre olarak verdiğiniz expression’ın string halini size geri döndürüyor. Diğer compiler servis attribute’ler gibi bu da optional.

using System.Runtime.CompilerServices;

void Write(object obj, [CallerArgumentExpression("obj")] string? msg = null)
{
    Console.WriteLine($"Expression şu: {msg}");
}

Write(new object());
Write("Merhaba");
Write(42 + 42 + 42);
Write(() lambda { });

int i = 42;
Write(i);

// Expression şu: new object()
// Expression şu: "Merhaba"
// Expression şu: 42 + 42 + 42
// Expression şu: () lambda  { }
// Expression şu: i

Kaynak: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/caller-argument-expression