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