C#类库和控制台应用程序

时间:2017-10-05 00:17:16

标签: c# visual-studio

我有我创建的这个类库。我遇到了让库与控制台应用程序一起工作的问题。这只是我正在进行的一项基本任务,但我不知道我哪里出错了。这是我的文件:

班级图书馆:

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);
          }
      }
  }

我想我的主要问题是调用方法在控制台应用程序中运行。不管我读了多少,我似乎无法知道我做错了什么。

1 个答案:

答案 0 :(得分:1)

  1. 您不需要在类库中使用Main方法。控制台应用程序中的Main方法是应用程序的入口点。

  2. 如果您在类库中定义的Main方法中的功能是您尝试为整个应用程序实现的功能,那么请考虑将该功能移到控制台应用程序的Main方法中

  3. 您已经将类库中的方法设置为静态,因此您不需要实例化Test类型的对象

  4. 所以我的解决方案就是在你的控制台应用程序的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类的名称。即使在像这样的小型测试应用程序中,我发现使用定义良好的名称也很有用。这是一个很好的做法,因此您可以在更大的应用程序中自动执行此操作。

    最后,祝你好运!