Использование свойств (Properties) - C#
Формулировка задачи:
недавно разбирал роботу свойств и по ходу возникло два вопроса.
1. есть автоматические свойства которые разрешают присваивать себе значение и извлекать его, тоесть обычные неавтоматические своства , без соотвествуещих им полей работать не должны по идеи. Однако даный код скомпилировался, и было получено сообщение "Process is terminated due to StackOverflowExeption"
Вопрос: почему вобще даный код скомпилировался раз у свойства нету привязки к полю? Если все-таки такое делать можно, тоесть использовать неавтоматические методы без соотвествующих им полей,тогда зачем оно надо и когда используеться? и последний вопрос по даному примеру, откуда появилось такое исключение и что оно значит?
2. Свойства в интерфейсах, аксессоры должны быть без тел, и указывать что может делать свойство при реализации, а именно read/write, readonly, writeonly(утверджение с MSDN). При этом, если в интерфейсе в свойстве есть лиш один аксессор, можно спокойно дописать второй в реализации и все будет работать, и лишь при явной реализации интерфейса аксессоры должны быть идентичны. Вопрос: какой смысл тогда в свойствах в интерфейсе если их можно переписать как угодно при реализации? где логика?
namespace testing
{
class A
{
public int Prop
{
get { return Prop; }
set { Prop = value;}
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
a.Prop = 5;
Console.WriteLine(a.Prop);
}
}
}Решение задачи: «Использование свойств (Properties)»
textual
Листинг программы
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName => $"{FirstName} {LastName}";
}