好的,所以努力学习一些C#。伟大的语言,喜欢与它一起工作,但我不理解如何克服缺乏实用程序类。本质上,我想设置一个通用实用程序类,它可以包含在一个文件夹中,只需通过“使用命名空间Globals / Utilities / etc”就可以用于任何项目。命令。实质上:
using System;
namespace Globals {
public static class Commands {
public static void WaitForReturn() {
Console.WriteLine("Press Enter to continue.");
Console.ReadLine();
}
}
}
与上述类似,在任何其他类中,我可以通过将其包含为预处理指令来调用函数。
using System;
using Globals;
namespace RectangleDemo {
<rectangle definition here>
class Demo {
static void Main(string[] args) {
Rectangle r = new Rectangle();
Rectangle s = new Rectangle(5, 6);
r.Display();
s.Display();
WaitForReturn();
}
}
}
实际上,我正在尝试简单地编译我的'实用程序'类(超过上面列出的内容)来检查错误,但它只是告诉我它无法编译它因为没有主要方法。有什么建议吗?
(是的,我知道我有一个java编码风格,我没关系!)
答案 0 :(得分:5)
使用C#6,您可以导入静态方法,以便最终得到以下编码样式:
using System;
using static Globals.Commands;
namespace MyConsole
{
internal class Program
{
private static void Main(string[] args)
{
WaitForReturn();
}
}
}
namespace Globals
{
public static class Commands
{
public static void WaitForReturn()
{
Console.WriteLine("Press Enter to continue.");
Console.ReadLine();
}
}
}
根据Tim的建议,如果您不想要主要入口点,请使用类库项目而不是控制台应用程序。
答案 1 :(得分:0)
C#无法按照您的预期运作。导入名称空间/类和文件之间没有关系,因此执行using Globals;
不会转换为包含C / C ++的文件内容(即与#include "Globals.cs"
不同)。
在命令行中,C#编译器接受组成源的文件列表:
csc Demo.cs Globals.cs
如果您使用的是像Visual Studio这样的IDE,则将<{em} Globals.cs
链接到您的项目中。通过 link ,我的意思更像是一个符号链接(虽然它实际上不是实际),而不是通过链接器进行静态链接,就像在C / C ++设置中一样。
因此,为了使“包含公共代码”的方案有效,您需要通过简单地将Globals.cs
添加到组成项目的C#文件列表中进行编译(在命令行中提供给编译器或添加到IDE中的项目中,然后使用静态导入:
using System;
using static Globals.Commands; // <-- import statically allows methods to be
// used without class name qualification
namespace RectangleDemo {
// <rectangle definition here>
class Demo {
static void Main(string[] args) {
Rectangle r = new Rectangle();
Rectangle s = new Rectangle(5, 6);
r.Display();
s.Display();
WaitForReturn();
}
}
}