gpt4 book ai didi

c# - 在这个例子中,为什么我会在变量范围内出错?

转载 作者:行者123 更新时间:2023-11-30 21:57:57 24 4
gpt4 key购买 nike

我一直在使用 VS2008 在 C# 中做一些示例。

下一个例子:

    class Program{

delegate double ProcessDelegate(double param1, double param2);

static double Multiply(double param1, double param2){
return param1 * param2;
}

static double Divide(double param1, double param2){
return param1 / param2;
}

static void Main(string[] args){
ProcessDelegate process;
char operacion;

Console.WriteLine("introduzca 2 nros separados por coma: ");
string input = Console.ReadLine();
int commaPos = input.IndexOf(',');

double param1 = Convert.ToDouble(input.Substring(0, commaPos));
double param2 = Convert.ToDouble(input.Substring(commaPos+1, input.Length - commaPos - 1));

Console.WriteLine("Introudzca M para Multiplicar o D para dividir: ");
do{
operacion = Console.ReadKey().KeyChar;
}while (operacion != 'M' && operacion != 'D' && operacion != 'm' && operacion != 'd');

switch (operacion){
case 'D':
process = new ProcessDelegate(Divide);
//Console.WriteLine("Result: {0}", process(param1, param2));
break;

case 'M':
process = new ProcessDelegate(Multiply);
//Console.WriteLine("Result: {0}", process(param1, param2));
break;
}//fin switch()

Console.WriteLine("Result: {0}", process(param1, param2));
}//fin Main()
}//fin Class

我的疑问是,如果在 Main() 部分内声明了进程变量,为什么 switch 部分之外的 WriteLine() 语句不起作用?

注意:wirteLine() 语句在 switch 部分内工作正常!

最佳答案

这里的问题不是变量超出范围,而是不能保证分配给

您只需将声明更改为:

ProcessDelegate process = null;

将开关更改为具有 默认 情况,分配委托(delegate)可以修复它,尽管编译器可能会遇到足够复杂的问题涉及此类内容时的代码路径。

基本上,编译器会提供一个有用的错误,说明您有可能使用未分配的变量。为它分配一个合理的值,以防后续代码不运行,你会没事的。

关于c# - 在这个例子中,为什么我会在变量范围内出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30386341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com