c # string.length - PullRequest
       9

c # string.length

1 голос
/ 24 ноября 2011

Этот простой код:

    [HttpPost]
    public ActionResult Check(string chosen_username, string email) {
        var lang = RouteData.Values["lang"]; ViewBag.Language = lang;

        string un; string em;
        try {
            un = chosen_username; em = email;
        }
        catch { un = ""; em = ""; }

        string s = un.Length.ToString();
        ViewBag.test = s;

        return View();
    }

Бросает объектную ссылку, не установленную для экземпляра исключения объекта (в строке, которая читает "string s = un.Length.ToString ();"

Может кто-нибудь помочь новичку в C #, пожалуйста?

Ответы [ 3 ]

4 голосов
/ 24 ноября 2011

Я думаю, вы не инициализировали объект ViewBag или он пуст.
Попробуйте это

if (ViewBag != null)
    ViewBag.test = un.Length.ToString();

Чтобы убедиться, что проблема не в строке (и это не так, поверьте мне), попробуйте это

string s = un.Length.ToString();

и используйте отладчик, чтобы проверить, что s - это то, что вы ожидали.

РЕДАКТИРОВАНО после того, как OP опубликовал новый код:
Просто: строка un равна нулю!!Попробуйте использовать

if (!String.IsNullOrEmpty(un))
    ViewBag.test = un.Length.ToString();
else {
    // Manage here the error
}
0 голосов
/ 24 ноября 2011

вы должны получить это исключение нулевого указателя, если selected_username имеет значение null, поскольку вы никогда не инициализировали свою строковую переменную,

вы должны либо: - проверить наличие нулевого ввода - инициализировать локальные переменные вашей функции - назначить их, чтобы избежатьnull как в: un = selected_username ??string.Empty;

0 голосов
/ 24 ноября 2011

Исключение ссылки на объект относится к вашему ViewBag объекту, а не к вашему un.Length.ToString() значению.

Следующее должно работать нормально:

string un = "test"; string em = "test";
string test = un.Length.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...