Вам нужно инициализировать строку. Прямо сейчас любая инициализация или присваивание выполняется внутри блока 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
}