Как стать автором
Обновить
24
0.2

Пользователь

Отправить сообщение
Я не автор статьи, но могу прояснить некоторые моменты:
1. Ваше замечание — справедливо насчет:
отправив массив чисел (Enumerate.Range(0, 10)), на другом конце получают всего два значения, да и те строки ([«value1», «value2»]).

2. Ваше замечание — несправедливо насчет:
И да, код картинками с выделением spellchecker'а, это круто.

Это не spellchecker выделяет код, это либо Visual Studio, либо Resharper пытаются намекнуть, что код можно переписать в ином ключе.

Например следующий код:
HttpClient client = new HttpClient();


Может быть заменен на следующий более лаконичный эквивалент:
var client = new HttpClient();


Однако, стоит заметить, что вариант с использованием ключевого слова «var» не всеми одобряем.
Кстати, кто-нибудь может дать объяснение следующему замечанию:
Важный момент: Katana не завязана на использовании каких либо интерфейсов или базовых типов, вместо этого определены соглашения, которым должны следовать разработчики.

Чем было продиктовано столь необычное ограничение — отказ от интерфейсов и базовых классов?
Рекомендую ознакомиться вот с этой замечательной статьей дядьки Э. Липперта. Он даёт объяснение этому поведению.
<зануда>
Надо заметить, что он всё-таки Jon, а не John.
</зануда>
Следует заметить, что подход с Expression Tree также не лишён недостатков, помимо низкой производительности в сравнении с CallerMemberName, он также подвержен ошибкам при копировании-вставке кода. Например следующий код верен с точки зрения компилятора, но в нем есть ошибка:

protected bool SetValue<T>(ref T property, T value, Expression<Func<T>> propertyDelegate)
{
	if (Object.Equals(property, value))
	{
		return false;
	}
	property = value;
 
	OnPropertyChanged(propertyDelegate);
 
	return true;
}

private string property1;
private string property2;
 
public string Property1
{
	get { return this.property1; }
	set { SetValue(ref this.property1, value, () => Property1); }
}
 
public string Property2
{
	get { return this.property2; }
	set { SetValue(ref this.property2, value, () => Property1); } // Ошибка тут
}


Кстати, есть отличная статья о все возможных способах реализации интерфейса INotifyPropertyChanged.
12 ...
11

Информация

В рейтинге
2 495-й
Зарегистрирован
Активность