Addition to the caller argument attributes
C# 5 first introduced caller argument attributes. They are CallerMemberName, CallerFilePath, and CallerLineNumber. These attributes make the compiler populate the method arguments in the generated code. They are used in various scenarios such as populating more data in the debug traces while firing an OnNotifyPropertyChanged event in the MVVM pattern. For example, consider the following code snippet, which defines a Gift model:
public class Gift : INotifyPropertyChanged
{
    private string _description;
    public string Description
    {
        get
        {
            return _description;
        }
        set
   ...