从函数返回值时出错
本文关键字:出错 返回值 函数 | 更新日期: 2023-09-27 18:34:22
我创建了一个函数来返回设备类型的int值,如下所示;
public int getDeviceType(string device)
{
int temp;
if (device.ToLower() == "android")
{
temp = 1;
}
else if (device.ToLower() == "ios")
{
temp = 2;
}
return temp;
}
我想返回设备的类型。
但它给了我一个错误
"Use of unassigned variable temp"
我该如何解决?
谢谢。
只需使用默认值初始化 temp,如下所示
public int getDeviceType(string device)
{
int temp = 0;
if (device.ToLower() == "android")
{
temp = 1;
}
else if (device.ToLower() == "ios")
{
temp = 2;
}
return temp;
}
将temp
初始化为0
因为如果它在任何情况下都没有出现,那么它将返回什么 temp 值。
我知道默认值int
0
但在这种情况下,您仍然必须初始化它。在那之前,它不会运行。
整数
变量默认值为 0 时此行为的根本原因分析以及为什么需要初始化它。
对于局部变量,编译器对流有一个很好的了解 - 它可以看到变量的"读取"和变量的"写入",并证明(在大多数情况下)第一次写入将在第一次读取之前发生。
实例变量并非如此。考虑一个简单的属性 - 你怎么知道有人是否会在得到它之前设置它?这使得强制实施合理的规则基本上是不可行的 - 因此您必须确保在构造函数中设置所有字段,或者允许它们具有默认值。C# 团队选择了后一种策略。
基本上,编译器希望确保初始化所有变量。本地和实例。因此,从理论上讲,您始终必须初始化所有变量。
但是,由于编译器无法确定实例变量在首次读取之前是否已初始化,因此编译器会将所有实例变量隐式初始化为其默认值。
因此,例外不是局部变量没有自动初始化,例外是实例变量确实会自动初始化。