Вы не можете присвоить строку методу, это вызывает ошибку.
В C # мы не используем методы получения и установки, как в Java или C ++. Вместо этого у нас есть свойства , которые мы используем. Вы можете назначать и читать значения, как если бы они были полями, но у них есть специальные методы, называемые accessors . Вы должны изменить свой класс следующим образом:
public class Bird
{
private string name;
private double weight = 30.5d;
public string Name
{
get => name;
set
{
if (value != null && value.Length > 2)
{
Console.WriteLine("Bird already has a name");
name = value;
}
else if (value != null && value.Length < 3)
{
Console.WriteLine("New name must be longer than two chars");
}
else
{
name = value;
}
}
}
public void Chirp()
{
System.Console.WriteLine(name + " says chirp!");
}
}
Тогда вы можете использовать его как:
var bird = new Bird();
// assign a value (equivalent to SetName method in your original code)
bird.Name = "Woody";
// read a value (equivalent to GetName method in your original code)
Console.WriteLine(bird.Name);