簡體   English   中英

C# 類庫和控制台應用程序

[英]C# class libraries and console application

我有我創建的這個類庫。 我遇到了讓庫與控制台應用程序一起工作的問題。 這只是我正在做的一項基本任務,但我不知道我哪里出錯了。 這是我的文件:

類庫:

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. 您的類庫中不需要 Main 方法。 控制台應用程序中的 Main 方法是應用程序的入口點。

  2. 如果您在類庫中定義的 Main 方法中的功能是您要為整個應用程序實現的功能,那么請考慮將該功能移動到控制台應用程序的 Main 方法中。

  3. 您已將類庫中的方法設為靜態,因此您無需實例化 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-班級成員

當決定創建一個靜態類時,我總是回到上面鏈接中的引用:

靜態類可以用作只對輸入參數進行操作而不必獲取或設置任何內部實例字段的方法集的方便容器。

我也會考慮更改您的 Test 類的名稱。 即使在像這樣的小型測試應用程序中,我發現使用定義明確且有意義的名稱也很有用。 這是一種很好的做法,因此您將在較大的應用程序中自動執行此操作。

最后,祝大家學習順利!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM