Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 满足所有要求后,必须出现可选参数_C# - Fatal编程技术网

C# 满足所有要求后,必须出现可选参数

C# 满足所有要求后,必须出现可选参数,c#,C#,我试图调试一些带有方法CalculateUItion的代码,其中一个参数名为credits。我在运行时遇到的错误是,“可选参数必须出现在所有必需参数之后”。 本应用程序的目的是演示可以使用一个、两个或三个参数调用方法。我无法找出所需参数和可选参数之间的差异。谢谢你抽出时间 public static void Main() { Console.WriteLine("Tuition is {0}", Calculatetuition(15)); Console.WriteLine(

我试图调试一些带有方法CalculateUItion的代码,其中一个参数名为credits。我在运行时遇到的错误是,“可选参数必须出现在所有必需参数之后”。 本应用程序的目的是演示可以使用一个、两个或三个参数调用方法。我无法找出所需参数和可选参数之间的差异。谢谢你抽出时间

public static void Main()
{
    Console.WriteLine("Tuition is {0}", Calculatetuition(15));
    Console.WriteLine("Tuition is {0}", CalculateTuition(15, 'O'));
    Console.WriteLine("Tuition is {0}", CalculateTuition(15, 'O', true));
}


public static double CalculateTuition(string code = "I", double credits,
         bool  scholarship = false)
{
    double tuition;
    const double RATE = 80.00;
    const double OUT_DISTRICT_FEE = 300.00;

    tuition = credits * RATE;
    if (code == 'I')
       tuition += OUT_DISTRICT_FEE;
    if (scholarship)
        tuition = 0;
    return tuition;
}
code
是此处的可选参数。如果调用者未提供
code
的值,则其默认值将为
“I”
。但是,正如错误所述,可选参数不能在必需参数之前。将方法签名(并相应更新用法)更改为:

或使
code
成为必需的参数

public static double CalculateTuition(string code, double credits, bool  scholarship = false)

当您为参数提供默认值时,它被定义为“可选”。可选参数必须在所有“必需”参数之后声明Side注意:在显示代码的情况下,此错误不会在运行时发生-ether post没有显示真正的代码,或者对“运行时”和“编译时”有一些混淆。你也可以考虑在MSDN上阅读。注意OP说“在运行时”——虽然你的解释是正确的,但它并没有解决这个问题的奇怪部分。
public static double CalculateTuition(double credits, string code = "I", bool scholarship = false)
public static double CalculateTuition(string code, double credits, bool  scholarship = false)