为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会提示当前上下文不存在"Do"问题所在?

为什么会提示当前上下文不存在"Do"问题所在?

C#
偶然的你 2022-12-21 19:15:48
第一个namespace Controls{public object Do(int a){//......}}第二个using Controls;namespace login{private void btnTest_Click(object sender, EventArgs e){try{int BB = (int) Do(C);//此处提示当前上下文不存在"Do"}}}
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

你这么写肯定不对啊,
首先你的第一个类名没有写出来,
而且作为非静态类的非静态方法是不能直接调用的,需要实例化。
也就是说,你在需要使用DO方法的时候,

var myclass = new class1(); //这个class1 是你DO函数所在的类的类名。 myclass是实例名,可以自己改。
实例化这个类之后,
int BB = (int)myclass.Do(C) ;
才能运行。

查看完整回答
反对 回复 2022-12-25
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

c#基类子类的函数调用关系,代码说明new关键字后面的类中的函数为对象调用的函数,当然必须要有virtual和override,继承就相当于包含了基类的函数,子类对象调用时基类的函数相当于就在子类当中一样。(必须要有virtual和override此代码才成立),问题是C#基础问题但很容易搞错,代码片在unity3d中测试,需要UnityEngine.dll。
using UnityEngine;  
using System.Collections;  

public class NewBehaviourScript : MonoBehaviour  
{  
void Start()  
{  
TestBase T1 = new TestChild();  
T1.TestA();//child!  

TestBase T2 = new TestBase();  
T2.TestA();//base!  

TestChild T3 = new TestChild();  
T1.TestA();//child!  

}  

}  

using UnityEngine;  
using System.Collections;  
using UnityEngine;  
public class TestBase  
{  
public TestBase()  
{  

}  
public virtual void A()  
{  
Debug.LogError("base!");  
}  

public void TestA()  
{  
A();  
}  

}  
public class TestChild : TestBase  
{  
public override void A()  
{  
Debug.LogError("child!");  
}  
}


查看完整回答
反对 回复 2022-12-25
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信