Свойства предназначены для очень простых членов класса; получение или установка значения свойства следует считать тривиальной операцией без значительных побочных эффектов.
Если настройка свойства приводит к изменению общедоступных значений класса, отличного от назначенного свойства, это более важно, чем базовое присвоение, и, вероятно, больше не подходит для свойства.
«Комплексное» имущество опасно, потому что оно ломается от ожиданий абонентов. Свойства интерпретируются как поля (с побочными эффектами), но как поля, которые вы ожидаете иметь возможность назначить значение, а затем получить это значение позже. Таким образом, вызывающий должен ожидать, что сможет назначить несколько свойств и снова получить их значения позже.
В вашем примере я не могу присвоить значения обоим свойствам и получить их; одно значение повлияет на другое. Это нарушает фундаментальное ожидание свойства. Если вы создадите метод одновременного присвоения значений обоим свойствам и сделаете оба свойства только для чтения, становится намного легче понять, где установлены значения.
Кроме того, как в сторону:
Это обычно считается плохой практикой, чтобы вернуться временный массив из свойства. Массивы могут быть неизменными, но их содержимое не является. Это означает, что вы можете изменить значение в массиве, которое будет сохраняться с объектом.
Например:
YourClass i = new YourClass();
i.IndividualStrings[0] = "Hello temporary array!";
Этот код выглядит как это изменение значения в IndividualStrings
собственности, но на самом деле массив создается собственности и не назначен везде, поэтому массив и изменения будут падать вне сферы действия сразу.
public string ActualProperty { get; set; }
public string[] GetIndividualStrings()
{
return ActualProperty.Split(.....);
}
public void SetFromIndividualStrings(string[] values)
{
// join strings from array .... ;
}