Вопрос компиляции C #: переводы строки в 1 оператор вызывают ошибку - PullRequest
0 голосов
/ 20 декабря 2008

Простой вопрос

Рассмотрим этот кусок кода в C #

String a;
String b;
String c;

 1. a =  
 2. b =
 3. //Comment
 4. c = "a String";

Во время компиляции все было хорошо, но я столкнулся с ошибкой при запуске приложения. Из моих журналов ошибка возникает в выше.

Вопрос:

Ошибка вызвана комментарием в строке 3?

Ошибка: «Ссылка на объект не установлена ​​для экземпляра объекта»

Я предполагаю, что компилятор рассматривает приведенный выше код как 1 оператор.

Этот код находится в коде за страницей aspx. (Aspx.cs)

// Предыстория //

aspx был протестирован на тестовых серверах и был файл. Однако после того, как мы развернули страницу на производственном сервере, в pageload () возникает ошибка, строка, где происходит ошибка, находится в строке 1 моего примера кода выше.

Это только мое подозрение, что ошибка вызвана комментарием.

Я прав?

Ответы [ 4 ]

2 голосов
/ 20 декабря 2008

Компилятор игнорирует все справа от «//» в строке 3, но строки 1, 2 и 4 все еще являются частью одного и того же оператора (как и все, что находится ниже строки 4 до «;» или блока достигнута).

Если ваш пример кода не потерял что-то во время публикации, этот код не должен даже компилироваться (ошибка разбора).


Хорошо, с вашим отредактированным кодом синтаксис действителен и не должен быть причиной вашей ошибки. Пожалуйста, опубликуйте сообщение об ошибке ...

2 голосов
/ 20 декабря 2008

Ваш оригинальный код не был законным. Ваш отредактированный код в порядке; всем 3 переменным присваивается одна и та же строка ("a String").

Какую точную ошибку вы видите?


(вопрос обновлен и теперь включает "Ссылка на объект не установлена ​​для экземпляра объекта")

Эта ошибка не имеет ничего общего с опубликованным кодом (если вы неправильно представили код при вставке) и не имеет ничего общего с комментарием //. Вы должны искать в другом месте. Попробуйте посмотреть на трассировку стека или добавить сообщения отладки / вывода. Или просто пройдитесь по коду, чтобы увидеть, где он на самом деле взрывается.

1 голос
/ 20 декабря 2008

Работает ли, когда вы переписываете его на

a = b = c = "a String";

? Если так, то понятно, в чем причина вашей проблемы;)

0 голосов
/ 20 декабря 2008

В вашем коде нет ошибок. Работает нормально. Если вы видите ошибку, это где-то еще.

...