我想要实现的是,显示以/开头的行数(用户通过comboBox1选择类型)给定字符(通过textbox1)。
尝试编译此代码:
string needle=textBox1.Text.Trim(), cboxSelection = comboBox1.Text;
int count;
switch (cboxSelection)
{
case "Starting with":
count = File.ReadLines(openFileDialog1.FileName).Count(line => Regex.IsMatch(line, "^" + needle + ".*$"));
break;
case "Ending with":
count = File.ReadLines(openFileDialog1.FileName).Count(line => Regex.IsMatch(line, "^.*" + needle + ".*$"));
break;
}
string strCount = count.ToString(); // error line
label6.Text = "There are " + strCount + " lines " + cboxSelection + " " + needle + " character.";
收到错误消息:Use of unassigned local variable 'count'
。我错过了什么?
答案 0 :(得分:4)
您的本地count
变量尚未在使用点明确分配。要么声明为
int count = 0
;
或在案例陈述中添加default
子句:
default:
count = 0;
您的switch
语句无法保证输入任何一种情况,因此count
可以保持未分配状态。如果需要这两种情况之一,则应在default
情况下抛出异常:
default: throw new ArgumentException("Invalid selection");
您应始终在switch语句中使用default
大小写来指定默认值或防范意外状态。
答案 1 :(得分:1)
you can try with int count = 0;
and add ; not , between two instructions
string needle=textBox1.Text.Trim();
cboxSelection = comboBox1.Text;
答案 2 :(得分:1)
Count
。如果您的开关没有“正在开始”或“结束时”,那么它将是null
。
您可以初始化它:
int count = 0;
答案 3 :(得分:1)
这是因为您没有涵盖交换机中的所有可能性...因此,您的代码中有一条“路径”,您将label6.Text
从未分配count
。
您应该为count
分配初始值或在交换机中添加default
答案 4 :(得分:1)
您的switch语句并未涵盖所有情况(实际上它不能,cboxSelection是一个字符串),因此在您使用它之前,count可能没有分配任何内容。
向交换机添加默认大小写以修复它。