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
no
else
,则可能会出现no
if
变为
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);
}