почему преобразование или разбор строки в int возвращает ноль? - PullRequest
0 голосов
/ 03 апреля 2011

Почему преобразование / анализ строки в int возвращает 0 / ноль?

При отладке, используя точку останова, я мог видеть «3», опубликованную для просмотра действия, в виде строкового значения, но когда я конвертирую в int, как указано выше, значение конвертируется в значение 0 типа int.

    //
    // GET: /Event/Browse
    public ActionResult Browse(string category)
    {
        int id = Convert.ToInt32(category);


        // Retrieve Category and its Associated Events from database
        var categoryModel = storeDB.Categories.Include("Events").Single(g => g.CategoryId == id);
        return View(categoryModel);
    }

Посмотрите на изображение ниже для лучшего понимания: enter image description here

Другое изображение - categoryModel, получающее значение NULL по запросу LINQ. enter image description here

Ответы [ 2 ]

4 голосов
/ 03 апреля 2011

Из MSDN на Int32.TryParse здесь

Когда этот метод возвращает, содержит Эквивалент 32-разрядного целого числа со знаком на число, содержащееся в с, если преобразование выполнено успешно, или ноль, если преобразование не удалось. преобразование терпит неудачу, если параметр s равен nullptr, не в правильном формате, или представляет число меньше MinValue или больше, чем MaxValue. это параметр передан неинициализированным.

3 голосов
/ 03 апреля 2011

Если ваш вызов Parse () завершится неудачно, а ваше исключение не будет обработано или вы не протестируете возвращаемое значение TryParse (), то переменная int наверняка останется такой, какой была - инициализирована по умолчанию нулем.

Например, это будет держать ваш int ноль:

int i;
Int32.Parse("FAIL!");
// i is still a zero.

Вместо этого попробуйте это:

int i;
bool parseSuccessful = Int32.TryParse("123", out i);
// parseSuccessful should be true, and i should be 123.

Или изящно увидеть, что это не так:

int i;
bool parseSuccessful = Int32.TryParse("FAIL!", out i);
// parseSuccessful should be false, and i should be 0.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...