Этот вопрос может быть немного прикован, но мне действительно нужно это понять.Ошибка компилятора CS0201
У меня есть следующий код:
string.Equals("0", "1"); //returns false, does compile
и
int i = 1;
i == 0; //should return false, does not compile
Вторая часть бросает за исключением
Только назначение, вызов, увеличение, уменьшение, и новые выражения объектов может использоваться как отчет
В documented, по крайней мере, назначение (=
), вызов метода ()
, new
, --
или ++
операция должна быть вызвана.
Вопрос: Означает ли это, что ==
- это не метод?
Вы не можете использовать сравнение 'i == 0;' как один оператор. То же самое произойдет, если вы попытаетесь объявить переменную как единственный оператор блока if, например. 'if (true) {int i = 0}' –
== Это не метод, это оператор – nbokmans
'==' является * оператором *. Он может быть * поддержан * методом для пользовательских типов, но компилятор может свободно компилировать специализированный код, когда есть типы, которые он знает о вовлеченности. –