преобразование даты и времени в строку - PullRequest
0 голосов
/ 21 июня 2011

У меня есть строковая переменная st, и я назначил эту строковую переменную для вывода таблицы данных поступающей формы с помощью этого оператора

string st;

if(dt!=null)
{
    if(dt.rows.count> 0)
    {
        st = dt.Rows[3]["timeslot_StartTime"].ToString();
    }
}

Теперь я хочу преобразовать эту строковую переменную в свойство даты и времени, и я сделал это, используя приведенный ниже оператор

DateTime pt1 = DateTime.Parse(st);

но он показывает ошибку при том, что use of unassigned local varaible "st".

Ответы [ 7 ]

3 голосов
/ 21 июня 2011

Инициализировать st в ноль или строку. Пустой

string st = null;

и чтобы быть на более безопасной стороне, проверьте st на ноль перед анализом.

1 голос
/ 21 июня 2011

попробуйте сделать это

string st = null;

проверьте st, если он не равен нулю, перед синтаксическим анализом

1 голос
/ 21 июня 2011

попробуйте определить st таким образом

string st = "" 
1 голос
/ 21 июня 2011

Дайте st начальное значение, например

string st = String.Empty;
0 голосов
/ 21 июня 2011

Вам нужно инициализировать строку. Прямо сейчас любая инициализация или присваивание выполняется внутри блока if. Компилятор обнаруживает это и считает, что, возможно, он никогда не инициализируется.

string st = string.Empty;

В качестве дополнительного примечания гораздо безопаснее использовать родственные методы TryParse () для разговоров, чтобы избежать непредвиденных исключений из-за недопустимой проблемы форматирования. Метод вернет true, если он успешно конвертирован, что выглядит чисто так:

        if (dt!=null)
        {
           if(dt.rows.count> 0)
           {
              st = dt.Rows[3]["timeslot_StartTime"].ToString();
           }
        }

        DateTime dt = DateTime.MinValue;
        if (DateTime.TryParse(st, out dt))
        {
            //was successful and do something here
        }
0 голосов
/ 21 июня 2011

Вы присваиваете st только внутри вашей if логики.Если вы пытаетесь использовать st вне этих блоков, вы столкнетесь с ошибкой «отмены назначения».

Либо

  • Присвойте переменной значение по умолчанию при ее инициализации
    • что-то, что может быть проанализировано, или не забудьте включить проверку перед тем, как попытаться разобрать
  • или попытаться разобрать ее в DateTime в точке, гдевы извлекаете значение из таблицы данных

Конечно, учитывая, что вы извлекаете значение из DataTable, если значение уже сохранено в таблице как дата ,забыть ToString() и вообще разбор.

DateTime date = (DateTime)dt.Rows[x]["ColumnName"];
0 голосов
/ 21 июня 2011

Возможно, вы используете переменную в другом диапазоне, чем тот, в котором она назначена, например

string st;
if (condition) {
    st = dt.Rows[3]["timeslot_StartTime"].ToString();
}
DateTime pt1 = DateTime.Parse(st);

Итак, st не всегда инициализируется (это только если условие if проверено). Попробуйте вместо

string st;
if (condition) {
    st = dt.Rows[3]["timeslot_StartTime"].ToString();
    DateTime pt1 = DateTime.Parse(st);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...