我有我创建的这个类库。我遇到了让库与控制台应用程序一起工作的问题。这只是我正在进行的一项基本任务,但我不知道我哪里出错了。这是我的文件:
班级图书馆:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test2
{
public class Test
{
public static string GetData(String prompt)
{
Console.WriteLine(prompt);
return Console.ReadLine();
}
public static int GetInt()
{
return Convert.ToInt32(GetData("Enter an interger"));
}
public static void put(String output)
{
Console.WriteLine(output);
}
public static void put(String output, String heading)
{
put(heading + '\n' + output);
}
public static void Main(String[] args)
{
int x = GetInt();
int y = GetInt();
if (x > 0 && y > 0) put(String.Format("Sum:{0}", x + y));
}
}
}
控制台应用程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Test2;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Test myTest = new Test();
Test.GetData(prompt);
}
}
}
我想我的主要问题是调用方法在控制台应用程序中运行。不管我读了多少,我似乎无法知道我做错了什么。
答案 0 :(得分:1)
您不需要在类库中使用Main方法。控制台应用程序中的Main方法是应用程序的入口点。
如果您在类库中定义的Main方法中的功能是您尝试为整个应用程序实现的功能,那么请考虑将该功能移到控制台应用程序的Main方法中
您已经将类库中的方法设置为静态,因此您不需要实例化Test类型的对象
所以我的解决方案就是在你的控制台应用程序的Main方法中使用它:
int x = Test.GetInt();
int y = Test.GetInt();
if (x > 0 && y > 0) Test.put(String.Format("Sum:{0}", x + y));
Console.Read();
我建议在这里阅读静态类和静态类成员:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-classes-and-static-class-members
在决定制作静态课程时,我总是从上面的链接回到这句话:
静态类可以用作集合的方便容器 只对输入参数进行操作而不必获取的方法 或者设置任何内部实例字段。
我还会考虑更改Test类的名称。即使在像这样的小型测试应用程序中,我发现使用定义良好的名称也很有用。这是一个很好的做法,因此您可以在更大的应用程序中自动执行此操作。
最后,祝你好运!