窗体不包含接受 0 个参数的构造函数



FORM 1

public partial class Login : Form
{
string cons =ConfigurationManager.ConnectionStrings["SSBarConnection"].ConnectionString;
public Login()
{
InitializeComponent();
}
public class passData
{
public string UserRole = "";  
}
private void btn_login_Click(object sender, EventArgs e)
{
try
{
if (output == "1" && output2 != "")
{
passData s = new passData();
s.UserRole = output2.ToString();
Main FRFM1 = new Main();
FRFM1.Show();
}
}

表格 2

namespace SSBar
{
public partial class Main : Form
{
SSBar.Login.passData s;
public string sa;
public Main(Login.passData s1)
{
InitializeComponent();
s = s1;
}
private void Main_Load(object sender, EventArgs e)
{   
sa=s.UserRole;
ss_user.Text = s.UserRole;
}
}
class SomeClass
{
}
class SomeClass
{
public SomeClass()
{
//we will leave this empty
}
}

这两个类是相同的类。在第一种情况下,我们没有任何构造函数,在第二种情况下,我们有构造函数,但它不需要任何参数。

如果我们这样做:

class SomeClass
{
public SomeClass(string GiveMeArgument)
{
}
}
class SomeClass
{
public SomeClass()
{
//we will leave this empty
}

public SomeClass(string GiveMeArgument)
{
}
}

这两个类是不一样的。现在你问自己"为什么不呢,我们所做的唯一一件事是添加了另一个可用于创建对象的构造函数,但我们对两个类都这样做了",答案是我们确实添加了相同的构造函数,但这里有一个黄金法则:"如果类没有任何构造函数,它将表现得像它有空构造函数(就像在我的第一个代码中一样),但如果类至少有一个构造函数, 它的默认行为将不再有效。因此,如果我们看一下第二个示例,当我们添加需要参数的构造函数时,我们失去了类的默认行为,该行为允许在没有参数的情况下创建它。

你在Main课上有同样的交易。要解决它,只需添加构造函数,除了您已经创建的构造函数之外,该构造函数不需要任何参数。

相关内容

最新更新