As I read before in some of this forums thread (here and here) properties are just syntactic sugar. This 2 implementations are the same after compilation:
class Item
{
string _name;
public string Name
{
get => _name;
set => _name = value;
}
}
class Item
{
string _name;
public string GetName() => _name;
public void SetName(string name) => _name = name;
}
If my hypothesis above it's true, why I can do this:
class Works
{
Item _item;
void SetItemName(string name) => _item?.SetName(name);
}
But I can't do this:
class Fails
{
Item _item;
void SetItemName(string name) => _item?.Name = name;
}
In the last example, _item?.Name = name
produces this compiler error:
The left-hand side of an assignment must be a variable, property or indexer