无法在同一文件夹中使用课程

时间:2019-03-10 13:29:14

标签: c# visual-studio oop

我刚刚开始学习C#和Microsoft Visual Studio。我刚刚创建了一个带有program.cs文件的C#控制台应用程序项目。我这样修改了内容:

using System;

namespace Calculator
{
    class Calculator
    {
        public static double DoOperation(double num1, double num2, string op)
        {
            double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error

            // Use a switch statement to do the math
            switch (op)
            {
                case "a":
                    result = num1 + num2;
                    break;
                case "s":
                    result = num1 - num2;
                    break;
                case "m":
                    result = num1 * num2;
                    break;
                case "d":
                    // Ask the user to enter a non-zero divisor
                    if (num2 != 0)
                    {
                        result = num1 / num2;
                    }
                    break;
                // Return text for an incorrect option entry
                default:
                    break;
            }
            return result;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
         //   NewClass obj = NewClass(); //this line is causing problem
            bool endApp = false;
            // Display title as the C# console calculator app
            Console.WriteLine("Console Calculator in C#\r");
            Console.WriteLine("------------------------\n");

            while (!endApp)
            {
                // Declare variables and set to empty
                string numInput1 = "";
                string numInput2 = "";
                double result = 0;

                // Ask the user to type the first number
                Console.Write("Type a number, and then press Enter: ");
                numInput1 = Console.ReadLine();

                double cleanNum1 = 0;
                while (!double.TryParse(numInput1, out cleanNum1))
                {
                    Console.Write("This is not valid input. Please enter an integer value: ");
                    numInput1 = Console.ReadLine();
                }

                // Ask the user to type the second number
                Console.Write("Type another number, and then press Enter: ");
                numInput2 = Console.ReadLine();

                double cleanNum2 = 0;
                while (!double.TryParse(numInput2, out cleanNum2))
                {
                    Console.Write("This is not valid input. Please enter an integer value: ");
                    numInput2 = Console.ReadLine();
                }

                // Ask the user to choose an operator
                Console.WriteLine("Choose an operator from the following list:");
                Console.WriteLine("\ta - Add");
                Console.WriteLine("\ts - Subtract");
                Console.WriteLine("\tm - Multiply");
                Console.WriteLine("\td - Divide");
                Console.Write("Your option? ");

                string op = Console.ReadLine();

                try
                {
                    result = Calculator.DoOperation(cleanNum1, cleanNum2, op);
                    if (double.IsNaN(result))
                    {
                        Console.WriteLine("This operation will result in a mathematical error.\n");
                    }
                    else Console.WriteLine("Your result: {0:0.##}\n", result);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message);
                }

                Console.WriteLine("------------------------\n");

                // Wait for the user to respond before closing
                Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: ");
                if (Console.ReadLine() == "n") endApp = true;

                Console.WriteLine("\n"); // Friendly linespacing
            }
            return;
        }
    }
}

现在,我想在此项目中添加另一个C#文件,并在程序中使用该类,如下所示:

使用系统;

namespace Calculator
{
    public class NewClass
    {
        public NewClass()
        {
            Console.WriteLine("Hello World");
        }
    }
}

当我尝试在Program中使用NewClass时,出现了错误。我已将其添加到program.cs所在的文件夹中,但仍未修复。我从link处获得了此解决方案。

所以我的主要问题是:

  1. 如何在c#中使用同一文件夹中的其他类(就像在Java中一样,如果两个程序位于同一文件夹中,则它们被视为在同一程序包中,并且无需任何import语句即可使用。在这种情况下可以做到?)
  2. 这与当前主题无关,但是我们可以在Microsoft Visual Studio中创建一个仅包含一些C#文件的文件夹的项目吗?(更具体地说,我只想像在普通IDE中一样编写C#代码,不创建任何项目怎么办?)

编辑:我应该发布确切的错误。 因此,当我尝试运行该程序时,它会显示:

1>------ Build started: Project: ConsoleApp1, Configuration: Debug|AnyCPU ------
C:\Users\<SystemName>\Source\Repos\<UserName>\C-sharp-Practice-Codes\ConsoleApp1\ConsoleApp1\Program.cs(42,28,42,36): error CS1955: Non-invocable member 'NewClass' cannot be used like a method.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

为什么NewClass()无法朗诵?

1 个答案:

答案 0 :(得分:1)

  

如何在c#中使用同一文件夹中的其他类(就像在Java中一样,如果两个程序位于同一文件夹中,则它们被视为在同一程序包中,并且无需任何import语句就可以使用。在这种情况下可以做到?)

您刚刚错过了new运算符。您与NewClass的一行应如下所示:

NewClass obj = new NewClass();

new operator docs page中了解有关new运算符的更多信息。

  

这与当前主题无关,但是我们可以在Microsoft Visual Studio中创建一个仅包含一些C#文件的文件夹的项目吗?(更具体地说,我只想像在普通IDE中一样编写C#代码,不创建任何项目怎么办?)

您可以通过以下两种方法来做到这一点:

  1. 通过在新的项目窗口创建器中创建空白解决方案(see more);
  2. 通过打开任何目录,例如在编程编辑器中,您可以通过解决方案资源管理器(see more来轻松创建新文件)。