没有Class可以在C#中独立运行吗?

bob*_*ker 21 c#

在C/C++中,我有一些函数,我从main()调用,我想在C#中重写它.我可以拥有独立的功能(方法),还是必须将它们放在另一个类中?我知道我可以在同一个类中拥有方法,但我希望每个函数/方法都有一个文件.

像这样工作:

using System.IO;
using System;


class Program
{
    static void Main()
    {
House balls = new House();
balls.said();

    }
}
    public class House
    {
        public void said()
        {
            Console.Write("fatty");
            Console.ReadLine();

        }
    }
Run Code Online (Sandbox Code Playgroud)

但后来我必须创建一个House的实例并调用say(),当在CI中时可以调用say().

Don*_*nie 16

如果它们确实不适合您现有的任何课程,请制作它们static并将它们放入static实用程序类中.


Eve*_*ard 14

如果使用 C# 9,现在这是可能的,这要归功于顶级语句 功能

在您的可执行项目中,现在允许使用以下语法:

using SomeNamespace;

// The following statements are seemingly defined without even a method,
// but will be placed inside a "Main" static method in a "$Program" static class
SayHello();
var classFromSomeNamespace = new SomeClass(); // from SomeNamespace
classFromSomeNamespace.SomeMethod();

// This function is seemingly defined without a class,
// but on compile time it will end up inside a "$Program" static class
void SayHello()
{
    Console.WriteLine("Hello!");
}

// Here the "traditional" syntax may start
namespace SomeNamespace
{
    public class SomeClass
    {
        public void SomeMethod()
        {
            Console.WriteLine("SomeMethod called");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

应该注意的是,上述语法仅对项目中的单个文件有效,并且编译器实际上仍然将其全部包装在$Program带有静态方法的静态类中。引入此功能是专门为了避免程序入口点的样板代码,并使得可以轻松地用 C# 编写“脚本”,同时保留完整的 .NET 功能。


Win*_*ith 7

C#中没有独立功能的概念.一切都是对象.

您可以在某个实用程序类上创建静态方法,并在不创建类实例的情况下调用它们

class Program
{
    static void Main()
    {
    House.said();
    }
}

public class House
    {
        public static void said()
        {
            Console.Write("fatty");
            Console.ReadLine();

        }
    }
Run Code Online (Sandbox Code Playgroud)


huy*_*itw 7

作为参考,我想在using static此处添加C#6 的附加功能。

现在,您可以使用静态类的方法,而不必一遍又一遍地键入该类的名称。匹配该问题的示例为:

House.cs

public static class House
{
    public static void Said()
    {
        Console.Write("fatty");
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

Program.cs

using static House;

class Program
{
    static void Main()
    {
        Said();
    }
}
Run Code Online (Sandbox Code Playgroud)


Nel*_*mel 5

您必须将它们放在一个类中,但该类可以像其他人提到的那样是静态的。如果你真的想为每个方法有一个单独的文件,你可以将类标记为部分以获得以下内容:

Program.cs
----------
class Program
{
    static void Main()
    {
        House.said();
        House.saidAgain();
    }
}

House-said.cs
-------------
public static partial class House
{
    public static void said()
    {
        Console.Write("fatty");
        Console.ReadLine();
    }
}

House-saidAgain.cs
------------------
public static partial class House
{
    public static void saidAgain()
    {
        Console.Write("fattyAgain");
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我不建议将每个都分开。主要使用部分类,以便设计器生成的代码不会覆盖同一类中的任何自定义代码。否则,您很容易最终得到数百个文件,并且没有简单的方法可以从一种方法转移到另一种方法。如果您认为您需要一个分部类,因为方法的数量变得不可维护,那么您可能需要将逻辑分离到另一个类中。