我还在学习C#的详细信息,所以请原谅我,如果这个基本的话。我一直在寻找答案,但没有找到答案。
我已经声明了局部变量(在我的函数中):
f(x) + n
我一直收到错误,"使用未分配的局部变量"当我试图归还它时:
string myVar;
我在这里做错了什么?
return (myVar);
答案 0 :(得分:8)
这与using
语句无关,而与while
循环有关。抛开其他所有东西,这就是问题,实质上是:
string myVar;
while (someNonConstantCondition)
{
myVar = someValue;
}
return myVar;
编译器说while
循环体可能永远不会执行,因为条件可能是假的。
我建议将代码更改为:
if (reader.Read())
{
return reader.GetString("column1").Trim();
}
...并使用using
语句确保所有命令等都自动处理。 (您已经收到了using
条conn.Close()
条,因此您可以移除对conn.Dispose()
,cmd.Dispose()
和reader.Read()
的来电。)
请注意,这只会从结果中读取第一个行,而您当前正在从 last 行返回该值。如果这对您很重要,可能会有更大的设计问题。
接下来,您需要考虑如果false
返回$('#chhk').on('click',function(e) {
e.preventDefault();
alert('click');
var table = $("#tbl tbody");
table.find('tr').each(function (i, el) {
var $tds = $(this).find('td'),
product = $tds.eq(2).text(),
price = $tds.eq(3).text(),
total = $tds.eq(5).text();
var qty = $(this).find('td input:first').val();
alert('Row ' + (i + 1) + ':\nProduct: ' + product
+ '\nPrice: ' + price
+ '\nTotal: ' + total
+'\n Qua:' + qty);
});
});
会发生什么......您想要抛出异常吗?还有别的吗?通过将return语句直接放在您已设法读取某些数据的位置,如果无法读取某些数据会发生什么事情的问题更清楚,IMO。
答案 1 :(得分:7)
修复错误更改 -
string myVar = string.Empty;
问题出在这里
while (reader.Read())
{
myVar= reader.GetString("column1").Trim();
}
此部分可能无法运行且myVar可能永远不会被分配,因此错误。
答案 2 :(得分:3)
编译器不是"确定" myVar
是否会在循环中获得值。初始化变量:
string myVar = "";
答案 3 :(得分:1)
如果没有数据要读取,myVar将没有任何值,
1)在阻止之前设置一个值,
myVar = string.Empty;
或更好 2)在声明变量
的地方分配初始值string myVar = string.Empty;