在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().
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 功能。
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)
作为参考,我想在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)
您必须将它们放在一个类中,但该类可以像其他人提到的那样是静态的。如果你真的想为每个方法有一个单独的文件,你可以将类标记为部分以获得以下内容:
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)
但是,我不建议将每个都分开。主要使用部分类,以便设计器生成的代码不会覆盖同一类中的任何自定义代码。否则,您很容易最终得到数百个文件,并且没有简单的方法可以从一种方法转移到另一种方法。如果您认为您需要一个分部类,因为方法的数量变得不可维护,那么您可能需要将逻辑分离到另一个类中。