Использование свойств (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}"; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д