这个程序是关于C#中的多态性。但是呼叫方法在visual studio中不起作用。该程序给出错误,如“当前上下文中不存在名称'调用'。”
mfib (x-2)
答案 0 :(得分:3)
你必须告诉来自哪个类的静态方法 - 即process.Call(dog);
。这应该使它工作
答案 1 :(得分:2)
class process
{
public static void Call(dog d) //2
{
Console.WriteLine("dog is called");
}
public static void Call(cat c) //3
{
Console.WriteLine("cat is called");
}
}
class polymorphism
{
public static void Main()
{
dog dog = new dog();
cat cat = new cat();
process.Call(dog); //1
}
}
我做了哪些改变?
流程有Call
,而不是polymorphism
。因此,请参阅Call
。
process
和3.如果您尚未定义访问级别,则无法访问类外的方法。因此,我添加了public
,因为我们需要访问Call
类之外的process
。
希望它有所帮助。
答案 2 :(得分:0)
您的计划存在一些问题:
process
范围内时,如果不指定类,则无法调用Call
。 Call
方法没有明确的可见性,这意味着它们默认为private
,因此无法在process
之外调用。cat
和dog
)。你正在做的是验证重载是否有效。重载不是面向对象的概念。它的语法糖。最重要的是,您的方法是static
。静态方法没有多态性。您发出的1和2的解决方式如下:
class process
{
public static void Call(dog d)
{
Console.WriteLine("dog is called");
}
public static void Call(cat c)
{
Console.WriteLine("cat is called");
}
}
class polymorphism
{
public static void Main()
{
dog dog = new dog();
cat cat = new cat();
process.Call(dog);
}
}
答案 3 :(得分:0)
class WebsiteCalendarController(http.Controller):
@http.route(['/calendar'], type='http', auth="public", website=True)
def calendar(self ,page=1, **searches):
#return request.redirect("website_calendar.index",values)
return request.render('website_calendar.index', {'values': [""]})
答案 4 :(得分:-2)
//polymorphism
class dog
{
}
class cat
{
}
class process
{
static void Call(dog d)
{
Console.WriteLine("dog is called");
}
static void Call(cat c)
{
Console.WriteLine("cat is called");
}
public static void Main()
{
dog dog = new dog();
cat cat = new cat();
Call(dog);
Console.ReadLine();
}
}