[C#] Класс не хочет создаваться - StackOverflowException
public ulong compressedSize
{
get
{
return compressedSize;
}
set
{
compressedSize += value;
}
}
Вроде разобрался - вспомнил, что свойства сами не используются для хранения (или как-то можно? добавил поля и заработало.
п.с.: что-то как-то инструментарий работы с классами не впечатлил - даже для С++ он лучше (например нельзя создать конструктор с параметрами).
И если бы не догадался открыть диаграмму классов - вообще бы все вручную пришлось делать.
Наверное придется ставить решейпер...
Мб конечно у меня в лайт версии что-то не показывается, но такого ответа не понял.Так понятнее?
public int a
{
get { return 0; }
set { a = a + value; }
}
что-то как-то инструментарий работы с классами не впечатлил - даже для С++ он лучше (например нельзя создать конструктор с параметрами)
Так понятнее?Мб конечно я туплю по-страшному, но так и не понимаю суть твоего примера
code:public int a
{
get { return 0; }
set { a = a + value; }
}
Первый вариант от моего отличался только сдвинутыми на уровень скобками - это на работу вообще никак влиять не должно (специально скопировал и сравнил побайтно).
Судя по тому, что оно таки заработало, я если и туплю, то не сильно.
А вообще, чтобы изучить язык программирования, надо хотя бы что-то про него прочитать...Да читал я, читал.
Но вот когда компилятор пропускает такие явные ошибки (или все-таки имена поля и имя свойства могут совпадать или можно хранить данные в самом свойстве без поля а потом сам эе от этого и страдает - этого даже как-то и не ожидаешь - это меня и смутило
Мб конечно я туплю по-страшному, но так и не понимаю суть твоего примераТы спросил, почему вылетает exception. Я тебе привёл очевидный кусок кода, где он возникает. Я же не был в курсе, что ты ничего про свойства не знаешь.
Но вот когда компилятор пропускает такие явные ошибки
С каких пор обычную рекурсию стали называть явной ошибкой?
компилятор пропускает такие явные ошибкиresharper вроде ловит такое. resharper — это аналог Visual Assist для C++.
Ты спросил, почему вылетает exception. Я тебе привёл очевидный кусок кода, где он возникает. Я же не был в курсе, что ты ничего про свойства не знаешь.
С каких пор обычную рекурсию стали называть явной ошибкой?То есть ты утверждаешь, что такой пример корректен и может использоваться в определенной ситуации, правильно?
Тогда пожалуйста приведи пример такой ситуации.
Чувак, это не семантическая ошибка, а просто Brain Damage.
Тогда пожалуйста приведи пример такой ситуации.Примером может быть какая-нибудь рекурсивная задача. Синтаксической ошибки тут нет.
что-то как-то инструментарий работы с классами не впечатлил - даже для С++ он лучше (например нельзя создать конструктор с параметрами)что значит нельзя создать конструктор с параметрами? ты жестоко ошибаешься. большая фунциональность классов С++ сохранена в С#
ты уверен, что тебе нужен C#?
если ты хочешь код вводить через вспомогательные диалоговые окна - то тебе скорее нужен vb
C#, а тем более resharper, заточен именно под текстовый набор кода.
Если в конкретном случае рекурсия не имеет смысла, это вполне могло бы отслеживаться компилятором.
Он действительно показывает места, где используется рекурсия
Если в конкретном случае рекурсия не имеет смысла, это вполне могло бы отслеживаться компилятором.Ты пишешь нонсенс.
Молча добавляется конструктор без параметров.
В свойствах конструктора на диаграмме классов нет полей, позволяющих это делать, а Сигнатуру метода поменять нельзя (в некоторых прогах это так и меняется).
Вообще странная ситуация: удалять и переупорядочивать параметры методов можно, а добавлять нельзя
Только после постановки resharper-а появился пункт смены сигнатуры метода.
Или я не там смотрел?
Не вижу смысла не использовать встроенные средства генерации.
А вот когда они какие-то неправильные, пытаюсь понять, это я чего не понял или разработчики, которые делали среду.
смысл? ввод через диалоговое окно - более трудозатратное.
понятно, например, что добавление нового класса с добавление нового файла - это сложное действие но с малым кол-вом вводом информации: ввести надо лишь название класса, а сделать надо: создать файл, добавить его в проект, прописать using-и, написать декларацию класса.
и здесь использование внешнего визарда удобнее - внего вводим название класса, а дальше все делается само
Добавление конструктора - это простая операция, которая требует большого кол-ва ввода.
соответственно выигрыша от диалогового окна нет, а есть лишь overhead-ы - переключение на мышку, переключение на другую парадигму (код <-> диалог)
вообще, подобную идею, чтобы все програмирование сводилось к тыканью кнопочек "добавить функцию/конструктор/класс" считаю неправильной.
Оставить комментарий
durka82
Есть вот такой пример (урезанный):При попытке запуска через некоторое время выдается StackOverflowException.
В отладочном режиме курсор при этом находится на первой { после get в public ulong size
Похоже на бесконечный цикл, но вот как он получается?..