没有Class可以在C#中独立运行吗?
在C / C ++中,我有一些函数,我从main()调用,我想在C#中重写它。 我可以拥有独立的function(方法),还是必须将它们放在另一个类中? 我知道我可以在同一个类中拥有方法,但我希望每个函数/方法都有一个文件。
像这样工作:
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(); } }
但后来我必须创建一个House的实例并调用say(),当在CI中时可以调用say()。
不。如果它们确实不适合您现有的任何类,请将它们设置为static
并将它们放在static
实用程序类中。
C#中没有独立function的概念。 一切都是对象。
您可以在某个实用程序类上创建静态方法,并在不创建类实例的情况下调用它们,例如
class Program { static void Main() { House.said(); } } public class House { public static void said() { Console.Write("fatty"); Console.ReadLine(); } }
你必须把它们放在一个类中,但是类可以像其他人提到的那样是静态的。 如果你真的想为每个方法都有一个单独的文件,你可以将该类标记为partial来获得以下内容:
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(); } }
但是,我不建议将每一个分开。 部分类主要用于使设计器生成的代码不会覆盖同一类中的任何自定义代码。 否则,您可以很容易地获得数百个文件,并且没有简单的方法可以从一种方法移动到另一种方法。 如果您认为需要部分类,因为方法的数量变得无法维护,那么您可能需要将逻辑分离到另一个类中。
尽管.NET中存在独立函数的概念,但C#不允许您指定此类函数。 您需要将它们粘贴在静态Utils
类或类似内容中。
如果你声明你的方法是static
(即: public static void said()
House.said()
)那么你可以用House.said()
调用它,它与你在C#中的接近程度。
您可以将所有方法添加到Program类中,但这很快就会成为一个难以维护的混乱,通常被称为God Class或Ball of Mud反模式。
为每个函数维护一个文件同样会变得非常混乱。 设计模式回答了“我在哪里放置我的方法”和“我应该创建什么类”这些问题。 类聚合行为 (函数)并且应该做一件事(单一责任。)
作为参考,我想在这里添加using static
C#6的using static
添加。
您现在可以使用静态类的方法,而无需再次反复键入该类的名称。 匹配问题的一个例子是:
House.cs
public static class House { public static void Said() { Console.Write("fatty"); Console.ReadLine(); } }
Program.cs中
using static House; class Program { static void Main() { Said(); } }