2017-02-09 3 views
-2

Этот вопрос может быть немного прикован, но мне действительно нужно это понять.Ошибка компилятора CS0201

У меня есть следующий код:

string.Equals("0", "1"); //returns false, does compile 

и

int i = 1; 
i == 0; //should return false, does not compile 

Вторая часть бросает за исключением

Только назначение, вызов, увеличение, уменьшение, и новые выражения объектов может использоваться как отчет

В documented, по крайней мере, назначение (=), вызов метода (), new, -- или ++ операция должна быть вызвана.

Вопрос: Означает ли это, что == - это не метод?

+0

Вы не можете использовать сравнение 'i == 0;' как один оператор. То же самое произойдет, если вы попытаетесь объявить переменную как единственный оператор блока if, например. 'if (true) {int i = 0}' –

+0

== Это не метод, это оператор – nbokmans

+0

'==' является * оператором *. Он может быть * поддержан * методом для пользовательских типов, но компилятор может свободно компилировать специализированный код, когда есть типы, которые он знает о вовлеченности. –

ответ

1

Исправить. == - не метод. Это оператор. И оператор сравнения, сам по себе ни с чем не наблюдающий результат сравнения, не имеет никакого смысла.

Вы может это сделать:

i.Equals(0); 

Поскольку .Equals() является вызовом метода, и, как вы продемонстрировали с string.Equals() вы можете вызвать метод на линии самого по себе (даже если игнорировать результат из метод).


Edit: Для уточнения на то, что вы отредактировали в вопрос:

i == 0; //should return false 

Оператор не «возврат» результат, но это вычисляться результате , (Пользовательский метод поддерживает или перегружает оператор, несмотря на это, но этот метод используется под капотом для оценки результата.) Однако операторы могут использоваться только в тех контекстах, где это позволяет язык. В случае оператора сравнения компилятор не позволяет ему существовать как оператор сам по себе. (Там нет необходимости разрешать его, поэтому нет необходимости в командах языка/компилятора/и т. Д.)

+0

ok забудьте об этом :) – Toshi

Смежные вопросы