我有一个字符串变量st
,我已使用此语句将此字符串变量分配给输出即将到来的表单数据表
string st;
if(dt!=null)
{
if(dt.rows.count> 0)
{
st = dt.Rows[3]["timeslot_StartTime"].ToString();
}
}
现在我想将此字符串变量转换为日期时间属性,我已使用以下语句完成此操作
DateTime pt1 = DateTime.Parse(st);
但它在st上显示错误use of unassigned local varaible "st"
。
答案 0 :(得分:3)
将st
初始化为null或string.Empty
string st = null;
并且要更安全一面,在解析之前检查st
是否为null。
答案 1 :(得分:1)
给st
一个初始值,例如
string st = String.Empty;
答案 2 :(得分:1)
尝试以这种方式定义st
string st = ""
答案 3 :(得分:1)
尝试这样做
string st = null;
在解析之前检查st是否为空
答案 4 :(得分:0)
您可能正在使用与指定范围不同的范围内的变量,例如
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);
}
答案 5 :(得分:0)
您只能在st
逻辑中指定if
。如果您尝试在这些块之外使用st
,则会遇到“取消分配”错误。
无论
DateTime
当然,假设您从DataTable中提取值,如果值已经作为日期存储在表中,请忘记ToString()
并完全解析。
DateTime date = (DateTime)dt.Rows[x]["ColumnName"];
答案 6 :(得分:0)
您需要初始化字符串。现在,正在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
}