C#未赋值局部变量
以这段代码为例(假设所有变量都实例化):C#未赋值局部变量,c#,C#,以这段代码为例(假设所有变量都实例化): 我的问题是,如果我运行这样的代码,例如areforumla中的width和height,会给我一个错误,说“使用未分配的局部变量”。如何使变量width和height从if语句中获取值,以便在区域公式和writeline中运行?我知道这与if语句范围之外的变量有关。您需要在if语句之外初始化变量;因此,它们的使用范围与它们的使用范围相同 var width = 0; var height = 0; if( size > 10){
我的问题是,如果我运行这样的代码,例如areforumla中的width和height,会给我一个错误,说“使用未分配的局部变量”。如何使变量width和height从if语句中获取值,以便在区域公式和writeline中运行?我知道这与if语句范围之外的变量有关。您需要在if语句之外初始化变量;因此,它们的使用范围与它们的使用范围相同
var width = 0;
var height = 0;
if( size > 10){
width = 5;
height = 5;
}
else {
width = 6;
height = 7;
}
area = width * height;
使用前初始化变量:
确保在使用size
变量之前已初始化该变量。变量width
和height
在if和else中都进行了初始化,以便在true和false条件下都能得到值。因此,您的代码如下所示:
var size =0.0;
// get value for size
if (size > 10)
{
width = 5;
height = 5;
}
else
{
width = 6;
height = 7;
}
area = width * height;
或者,您必须将这些变量设置为全局,如果您的变量在条件代码的范围内实例化或全局,那么它没有理由不起作用。但是,如果它们没有实例化,您可以执行以下操作(假设
size
也实例化了一个值)
或者你可以添加一个漂亮的小函数,就像这样
private int GetArea(int size)
{
return ((size > 10) ? 5 : 6) * ((size > 10) ? 5 : 7);
}
您在何处声明了宽度、高度和面积?您在何处初始化了
size
?在我的实际代码中,它们已被实例化,这意味着我们必须猜测实际代码?无需在此处使用和高度初始化。size
可能有问题,但答案仍然是一样的,变量需要正确初始化。在我的实际代码中,它们已经被初始化了instantiated@eagle560你能发布实际的代码吗?我没有看到我的变量没有被正确实例化(整数被实例化为double)谢谢你们的帮助。无需在此处初始化宽度
和高度
。在我的实际代码中,size
可能有问题,它们已被实例化。我们如何猜测它们是在实际代码中初始化的?在if-else
中,您可以使用未赋值变量,因为它必须在if
或else
中初始化。但是如果您同时拥有两个if
noelse
,则可能会出现noif
变为true
的情况,因此必须在使用前进行初始化。
int width = (size > 10) ? 5 : 6;
int height = (size > 10) ? 5 : 7;
int area = height * width;
private int GetArea(int size)
{
return ((size > 10) ? 5 : 6) * ((size > 10) ? 5 : 7);
}