如何仅使用其中的一些参数调用方法?

时间:2014-01-18 14:35:16

标签: c# winforms

我试图将字符串从文本框传递到同一个类中的方法,但是当我尝试这样做时,我收到一条错误消息:

no overload method, TotalWeighting takes one argument.

尽管在我尝试发送的方法的参数中包含了每个对象。调用方法的地方会出现错误消息。

这是程序的底部:

public void textBox7_TextChanged(object sender, EventArgs e)
{//Assignment 6, box 1
    string STRtb11 = textBox7.Text;//Get value from textBox7 and set to new varaible STRtb10
    TotalWeighting(STRtb11);
}

public void textBox12_TextChanged(object sender, EventArgs e)
{//Assignment 6, box 2
    string STRtb12 = textBox12.Text;//Get value from textBox12 and set to new varaible STRtb11
    TotalWeighting(STRtb12);
}

public static double TotalWeighting(string STRtb1, string STRtb2, string STRtb3, string STRtb4, string STRtb5, string STRtb6, string STRtb7, string STRtb8, string STRtb9, string STRtb10, string STRtb12)
{
    return 0;
}

2 个答案:

答案 0 :(得分:5)

您的方法TotalWeighting接受12个字符串,并且其当前形式不能接受任何更少的字符串。

有几种方法可以改进此方法:

  1. 您可以为不使用的每个字符串传递null,并在方法中处理这些空值:

    TotalWeighting("alpha", "bravo", null, null, null, null, null, null, null, null, null, null);

  2. 您可以通过将方法签名更改为:

    来使用默认参数
    public static double TotalWeighting(
        string STRtb1 = null,
        string STRtb2 = null,
        string STRtb3 = null,
        string STRtb4 = null,
        string STRtb5 = null,
        string STRtb6 = null,
        string STRtb7 = null,
        string STRtb8 = null,
        string STRtb9 = null,
        string STRtb10 = null,
        string STRtb12 = null)
    {
        return 0;
    }
  3. 您可以为每个所需数量的参数重载方法:

    public static double TotalWeighting(string STRtb1) { ... }
    public static double TotalWeighting(string STRtb1, string STRtb2) { ... }
     ...

  4. 您可以使用params关键字来允许该方法接受可变数量的参数:

    public static double TotalWeighting(params string[] input) { ... }

答案 1 :(得分:0)

您的TotalWeighting方法需要 12个参数 STRtb1..STRtb12;所以你应该提供这12个参数或者只用1个参数实现一个函数:

// Leave 1 argument of 12 ones
public static double TotalWeighting(string STRtb1) {
  return 0;
}