C# 我能';似乎不能将类中的一个方法调用到另一个类中。我的主类和ApplicationUtilities类有错误。我做错了什么?
我似乎无法将类中的方法调用到另一个类中。我的主类“DisplayApplicationInformation”、“DisplayDivider”和“TerminateApplications”以及ApplicationUtilities类都有错误。我做错了什么?以下是我所拥有的:C# 我能';似乎不能将类中的一个方法调用到另一个类中。我的主类和ApplicationUtilities类有错误。我做错了什么?,c#,C#,我似乎无法将类中的方法调用到另一个类中。我的主类“DisplayApplicationInformation”、“DisplayDivider”和“TerminateApplications”以及ApplicationUtilities类都有错误。我做错了什么?以下是我所拥有的: class ApplicationUtilities { public static void DisplayAplicationInformation() { Console.Writ
class ApplicationUtilities
{
public static void DisplayAplicationInformation()
{
Console.WriteLine();
Console.WriteLine("Welcome to the Basic User Interface program");
Console.WriteLine("CIS247A, Week 1 Lab");
Console.WriteLine("Name: Lewis Jones");
Console.WriteLine("This program accepts user input as a string, then make the appropriate data conversion");
Console.WriteLine();
}
}
public static void DisplayDivider(string outPutTitle)
{
Console.WriteLine();
Console.WriteLine("***************", + outPutTitle + "***************");
Console.WriteLine();
}
public static void TerminateApplication()
{
Console.WriteLine("Thank you for using the Basic User Interface Program!!");
}
}
}您正在使用
AU
和IU
,而没有对它们进行初始化。此外,您尝试将静态方法作为非静态方法访问
//initialize AU and IU
ApplicationUtilities AU = new ApplicationUtilities();
InputUtilities IU = new InputUtilities ();
从所有方法中删除静态
,然后通过
//call DisplayApplicationInformation()
AU.DisplayApplicationInformation();
说明:
Main()
是static
,因此有两个选项可以从类中调用方法:
- 将类中的方法定义为
static
- 类的创建实例包含这些方法
您混合使用了这两种方法,这是一种糟糕的方式。如果这不仅仅是复制/粘贴错误:DisplayDivider和TerminateApplication不在ApplicationUtility类范围内。 删除displayapplicationinformation()之后的第二个}应该可以解决这个问题 在main方法中,您试图用一个类实例调用静态方法:ApplicationUtilities AU。静态方法不需要这样做-因此您应该删除static关键字或直接调用它们:
ApplicationUtilities.DisplayApplicationInformation();
另外,方法DisplayApplicationInformation在您的类中有一个输入错误:DisplayApplicationInformation(缺少一个“p”)静态方法是属于
类而不是实例的算法
记住这一点,此代码将失败:
ApplicationUtilities AU - new ApplicationUtilities();
AU.DisplayDivider("Name");
它失败的原因是因为AU
是类的实例,而不是类本身。要正确运行上述代码,请通过类本身调用该方法:
ApplicationUtilities.DisplayDivider("Name");
正如在其他答案中指出的,如果不实例化对象,就不能从实例调用非静态方法。你在这里做了什么:
ApplicationUtilities AU;
InputUtilities IU;
就是简单地声明变量。让我们假设DisplayDivider()
是一个非静态方法。结果:
ApplicationUtilities AU;
AU.DisplayDivider("Name");
是NullReferenceException
,因为在您提供的方法DisplayDivider
和TerminateApplication
不在ApplicationUtilities
类的代码中,对象的默认值是null
同时尝试在ApplicationUtilities
类定义中添加public
关键字:public类ApplicationUtilities
默认情况下,在C#中,类是内部的,如果您的ApplicationUtilities
类是在另一个项目中定义的,您将无法调用他的方法。什么是错误文本?我不完全理解。我被告知要使用“publicstaticvoid”,但我仍然会出错。我应该不使用AU和IU吗?@mrlljones我在答案中添加了解释。您可以在实例上调用静态方法。只是不能用vica versa。@Balázs来澄清我的意思:可以在实例方法内部调用静态方法,但不能用类实例调用静态方法。因此,在给定的代码中,ApplicationUtilities.DisplayApplicationInformation();可以工作,但是AU.DisplayApplicationInformation();我真的很感激你们的帮助。还有一件事;在主类中,我的代码中也有一个错误。我试着用几种不同的方法重写它,但每种方法都是错误的。ApplicationUtilities.DisplayDivider(“名称”);-->name=IU.GetInput(“输入您的姓名”);Console.WriteLine(“您的名字是:”+name);没有关系。很抱歉。我发现了那个错误。我的程序现在运行得很好。再次感谢你的帮助。
ApplicationUtilities AU;
AU.DisplayDivider("Name");