我在C#中声明了一个变量,不能在switch语句中使用它
考虑一下这个C代码: 如果我在switch语句中给decimal我在C#中声明了一个变量,不能在switch语句中使用它,c#,variables,scope,switch-statement,local,C#,Variables,Scope,Switch Statement,Local,考虑一下这个C代码: 如果我在switch语句中给decimalsum一个值,它将弹出一个错误语句,说明: 使用未分配的局部变量“sum” 我是C#的新手,所以说这话听起来可能很愚蠢。看起来我已经在switch语句中设置了sum的值。我试着把同样的sum=12M在所有其他case语句中,但这似乎没有帮助 顺便说一句,我在修改switch语句之外的其他变量时也遇到了一些问题——例如,rite,左 您只为一个条件设置sum的值,因此当您尝试将其转换为字符串时,它不会总是在指定点处被指定。尝试将其声明
sum
一个值,它将弹出一个错误语句,说明:
使用未分配的局部变量“sum”
我是C#的新手,所以说这话听起来可能很愚蠢。看起来我已经在switch
语句中设置了sum的值。我试着把同样的sum=12M
在所有其他case语句中,但这似乎没有帮助
顺便说一句,我在修改switch语句之外的其他变量时也遇到了一些问题——例如,rite,左 您只为一个条件设置sum的值,因此当您尝试将其转换为字符串时,它不会总是在指定点处被指定。尝试将其声明为
decimalsum=0.0如果gr
不等于“X”sum
则code>没有值。编译器正在就此向您发出警告。编译器检测到存在一个执行路径,该路径中不会分配变量。如果gr
不是X
,则在switch语句之后将使用未赋值值
您只需将初始值添加到声明中:
decimal sum = 0m;
只有实例变量
获得默认值,因此像sum
这样的局部变量必须初始化
,才能在其他地方使用。由于可能不会为其分配任何内容,编译器会引发错误。这是因为只有在switch语句遇到“X”的情况下才分配变量sum。要解决此问题,请通过在顶部执行以下操作来设置默认值:
decimal sum = 0m;
只需在声明时为其指定默认值,您就不会出现错误:
decimal sum = 0;
在申报时,您应使用以下内容:
decimal sum=0m;
编译器无法确保第一个大小写保持不变,因此在不赋值的情况下仍可使用sum您是否也将其放入了默认值中?无论哪种方式,都需要通过所有代码路径对其进行初始化。最简单的方法是将顶部的声明更改为:decimal sum=0.0m
。旁白:使用try/catch和cast来解析字符串输入。考虑使用。
decimal sum=0m;