【问题标题】:C# - How to make programs without IDE/Visual Studio? [closed]C# - 如何在没有 IDE/Visual Studio 的情况下制作程序? [关闭]
【发布时间】:2014-11-22 02:30:55
【问题描述】:

我在 Notepad++ 和 MonoDevelop 中只使用 .cs 文件而不是解决方案来制作 C# 控制台应用程序。我从 CMD 编译代码。

我想在我的简单“Hacked”程序中添加两个类,它们只是简单地显示很多 0 和 1。每次我尝试进行对象引用时,我都会在编译器中收到一个错误,提示我需要对非静态字段进行引用。使方法静态有效,但我不认为每个方法都应该是静态的。

所以我的问题是,如何在没有 IDE 的情况下进行对象引用?

编辑:我通过将变量设为静态找到了解决方案。而且我知道,当一个方法是静态的时,可以从任何类访问它而无需引用。我只是在测试一个类参考以了解更多关于 C# 的信息。但是我将类引用变量设为静态,并且引用类中非静态的任何内容都可以正常工作。感谢大家帮助我,因为您的建议和解释确实帮助了我。

【问题讨论】:

  • 如何使用您编写的代码编辑您的问题,这可能有助于找出导致错误的原因。您不必使用 IDE 来编写 C#
  • 虽然我相信@Cyral 的答案是正确的方法,但您的主要问题可以在here 找到。基本上,要生成.exe,您只需要打开命令行并运行:C:\Windows\Microsoft.NET\Framework\\csc.exe file.cs 您还可以找到更多命令行参数@987654322 @.

标签: c# c notepad++ monodevelop


【解决方案1】:

很高兴看到有人开始如此简单。无论您是在 VisualStudio 中还是在简单的文本编辑器中工作,对象引用都是相同的。

这实际上是您的代码中的一个错误,而不是您没有使用 IDE。

我假设您没有过多地研究面向对象编程,并且这些都是简单的单类程序来帮助您入门。

在这种情况下,所有其他方法、字段等都可以通过您的public static Main(string[] args) 方法以某种方式访问​​。静态方法可以从所有类访问,并且不需要对象实例。没有实例访问的方法和字段必须是静态的。

所以,在这种情况下,是的,每个方法确实都需要是静态的。

看看这个问题,What's a "static method"?

例如,假设您创建了一个名为 Math 的类,并创建了一个 Pow(int x, int power) (power) 方法(这是 .NET 框架的一部分)。您将创建此函数static,因为您希望所有类都能够访问它,而无需创建Math 类的实例。

int square = Math.Pow(2, 2); //Static method, no instance needed

现在说,你创建一个名为Book的类,这个类有GetPagesLeft()等方法。在这种情况下,它特定于“书”的每个实例,而不应该是 static,因为它适用于每个实例。

Book book = new Book(); //Create instance
int pagesLeft = book.GetPagesLeft(); //Instance method

不要害怕使用静态方法,它们的存在是有原因的。

请注意,我不是专业的开发人员,所以我使用的一些术语可能并不完全正确,但我希望它能够理解这一点。

【讨论】:

  • 好点子,我没有想到它会是一个没有单独一组类的程序,如果他在main中调用写在类中的方法,你是绝对正确的。跨度>
【解决方案2】:
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // instanceMethod();  // Error calling instance method without an instance.
                                  // Won't even compile


            Program prg = new Program();
            prg.instanceMethod(); // No Error calling instance method from instance

            staticMethod(); // No Error calling static method without an instance
        }

    void instanceMethod()
    {

    }

    static void staticMethod() 
    {

    }
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多