Поскольку в других ответах отсутствуют примеры синтаксиса методов получения / установки, я опубликую свой.
namespace GetSet
{
public class Role
{
// private backing field
private string _weapon;
// properties can have getters and setters, that contains some logic
public string Weapon
{
get { return _weapon; }
set { if (_weapon != vale) _weapon = value; }
}
// there is an auto-getters/setters
// in this case, backing field is handled by .Net CLR
public string Armour { get; set; }
// getters and setters may have different access level
// also, note property initializer '= "John";' - this will set property value
// to "John" right before constructor invocation
public string Name { get; private set; } = "John";
// properties also can be readonly, so they can be setted only in constructors
public string Passive { get; }
// public constructor
public Role(string passive)
{
Passive = passive;
}
public void ChangeName(string newName)
{
Name = newName; // setting property through private setter
}
// I believe, that this method shouldn't be used to represent object as string
// At least, I think, you should never relay on it's return value, BUT it ups to you
public overide string ToString() => Name;
}
}
Кроме того, как вы можете видеть, я не устанавливаю общедоступные свойства (свойства с открытыми установщиками, Weapon
и Armour
) в consturctors, потому что я могу инициализировать их вместе с созданием объекта Role
, например:
var mage = new Role("Magic affinity") { Weapon = "Staff", Armor = "Robes" };
mage.ChangeName("John, Doe");
Как я уже говорил, я считаю, что это не ретранслирует сам объект,как это будет выглядеть в строке.Я так думаю, потому что если вам по каким-то причинам нужно представлять один и тот же объект в разных местах вашего кода в виде разных строк - это вызовет проблемы.Поэтому вместо этого:
// this will call .ToString() method
Console.WriteLine(mage);
// output: John, Doe
Я предлагаю это:
// represent object as you need
Console.WriteLine($"{mage.Name} - walks in {mage.Armour}, beats with {mage.Weapon}");
// output: John, Doe - walks in Robes, beats with Staff