2014-02-18 3 views
3

При использовании int.Parse ("1") в качестве операнда постфикса приращения ++ оператора:Почему оператор postfix increment (++) не разрешен после int.parse ("1")?

var result = int.Parse("1")++; 

C# компилятор показывает ошибку с:

Операнд инкремента или декремент должен быть переменной, свойством или индексом.

Который я могу понять для оператора ввода-вывода префикса, но не для оператора postfix in или decment. В случае с префиксом оператор не имеет значения для выполнения операции, но в случае постфикса всегда будет значение. То же самое с свойством, которое находится за кулисами «getter» и, таким образом, возвращает значение таким же образом (предположение, не проверенное в IL).

Что мне здесь не хватает?

+0

Вы можете также перейти к результату вара '= int.Parse («1»); result ++; ' –

ответ

12

Doe это имеет смысл для вас? Потому что это точно такая же вещь.

var result = (int.Parse("1") = int.Parse("1")+1); 

Вы уверены, что можете назначить метод?

+0

Эй, это было бы круто !! Мы могли бы изменить строковый литерал ''1" 'на' "2" '. :-) –

1

ошибка отображается, потому что ++ добавляет значение и устанавливает, что приращение возвращается к переменной или свойству или индексатору.

в вашем случае, какова будет привязка структуры к результату? Это невозможно, потому что это операция только для памяти, и значение не может быть сохранено.

Так что вы должны сделать int.Parse("1") + 1

0

Ошибка говорит все: «Операнд оператора инкремента или декремента должна быть переменная, свойство или индексатор»

Вы пытаетесь увеличиваем выражение.

var result = int.Parse("1"); 
resunt += 1; 
1

Технический ответ заключается в том, что операторы с автоматическим приращением и автоматическим декрементом работают только с выражениями «lvalues»; то есть выражения, которые будут, будут легальными с левой стороны задания.

(AFAIK, это применяется во всех языке, которые поддерживают автоматическое приращение и авто-декремент ...)

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