C# - 无法从不同的类访问公共函数

时间:2016-02-19 17:29:14

标签: c#

我从C#开始,我遇到了问题。

我创建了一个" Windows窗体应用程序"项目

我有一个名为form1的表单类,我添加了一个名为usercontrol1的UserControl类。在usercontrol1中,我有一个名为test的公共函数,它返回123。

出于某种原因,我不能这样做:

private void Form1_Load(object sender, EventArgs e)
{
 UserControl usercontroltest = new usercontrol1();
 usercontroltest.test();
} 

我得到的错误是"用户控件不包含"

的定义

3 个答案:

答案 0 :(得分:7)

这是因为您已声明您的变量属于UserControl类型。这意味着编译器只允许您使用UserControl中声明的成员及其继承的类。实际对象在执行时仍为<{em>}类型,但编译器只关心您尝试用来调用方法的变量的编译时类型。

您需要更改声明以使用您的特定类:

usercontrol1

或者您可以使用隐式类型的本地变量,它会使完全具有相同的效果:

usercontrol1 usercontroltest = new usercontrol1();

这将解决眼前的问题,但是:

  • 您确定要在此处创建实例,而不是使用表单中已有的实例吗?
  • 你应该养成尽快跟踪.NET naming conventions的习惯

答案 1 :(得分:2)

var usercontroltest = new usercontrol1();

虽然这会分配一个新的UserControl usercontroltest = new usercontrol1(); ,但它会将其分配给它的基类usercontrol1UserControl没有UserControl方法。

你可能想要:

test()

代替。

答案 2 :(得分:0)

还要确保将nerdcaps用于类名(http://c2.com/cgi/wiki?CapitalizationRules