C# 匹配的最佳重载方法...有一些无效参数

Posted

技术标签:

【中文标题】C# 匹配的最佳重载方法...有一些无效参数【英文标题】:C# The best overloaded method match for ...has some invalid arguments 【发布时间】:2014-04-14 05:03:59 【问题描述】:
public class RegistrationClass

    SqlConnection myConnection = new SqlConnection("Data Source=MOE-PC\\SQLEXPRESS;Initial Catalog=db_University;Integrated Security=True;Pooling=False");
    ConnectionClass con = new ConnectionClass();
    int ID , i;
    String fullName, motherName, gender, placeOfBirth, email, phone, adress, schoolDegree, languages, highSchool, faculty, major;

    public void setValues (String fullName1,String motherName1,String gender1,String placeOfBirth1,String email1,String phone1,String adress1, String faculty1,String major1,String schoolDegree1,String languages1,String highSchool1)
    
        fullName = fullName1;
        motherName = motherName1;
        gender = gender1;
        placeOfBirth= placeOfBirth1;
        email =email1;
        phone= phone1;
        adress =adress1;
        faculty =faculty1;
        major =major1;
        schoolDegree =schoolDegree1;
        languages =languages1;
        highSchool = highSchool1;
    

这是点击注册按钮时的网络表单

public partial class WebForm1 : System.Web.UI.Page

    protected void Button_Register_Click(object sender, EventArgs e)
    
        string lang = "";
        Classes.RegistrationClass R = new Classes.RegistrationClass();
        R.setValues(txt_Name.ToString, txt_MotherName.ToString, dropDown_Gender.ToString, dropDown_POB.ToString, txt_Email.ToString, txt_Phone.ToString, txt_Adress.ToString, DropDown_Faculty.ToString, DropDown_Major.ToString, dropDown_SchoolDegree.ToString, txt_Name.ToString, txt_HighSchool.ToString);

这是错误:

'CCharpApp.RegistrationClass.setValues(string,string,string,string,string,string,string,string,string,string,string,string)' 的最佳重载方法匹配有一些无效参数。

【问题讨论】:

这就是为什么你不应该有这么多参数的函数。 这个方法需要一些TLC。 【参考方案1】:

dynamic 变量作为参数传递给方法时,也会发生这种情况。编译器编译没有错误,可能有执行错误。

【讨论】:

是的,谢谢分享,马丁。 (动态对象,动态变量) 我发生了类似的错误,在我的情况下类型是 var【参考方案2】:

txt_Name.ToString 解析为引用ToString 方法的方法组。它不调用ToString。为此,您需要写txt_Name.ToString()。话虽如此,您也不想这样做。 TextBoxToString 方法不返回控件的文本。 Text 属性是你获取文本的方式,所以你想写:txt_Name.Text

最后,你应该避免使用参数太多的函数。当您遇到有很多争论时看到的错误时,尝试确定哪里出了问题会变得更加困难;有很多方法可以关闭它。相反,RegistrationClass 应该简单地具有每个这些值的属性,然后调用者可以单独设置每个属性。这将更容易使用。

【讨论】:

当传递方法组而不是字符串时,应用程序如何编译? @Loreno 它...不...这就是 OP 发布生成的编译器错误的原因。

以上是关于C# 匹配的最佳重载方法...有一些无效参数的主要内容,如果未能解决你的问题,请参考以下文章

匹配的最佳重载方法有一些无效参数

最佳重载方法匹配有一些无效参数

最佳重载方法匹配...有一些无效参数

需要帮助 'string.endswith(string)' 的最佳重载方法匹配有一些无效参数

错误:“最佳重载方法匹配”和“参数 1:无法从 'string' 转换为 'int'”

C#方法重载