Bab*_*que 9 .net c# console-application .net-6.0 c#-10.0
我创建了一个控制台应用程序.NET 6.0来学习单例模式。但我观察到文件发生了重大变化Program.cs。
namespace和class方法Main已从program.cs中删除.NET 6.0。
我相信将要编写的代码program.cs将被视为在Main方法内。但我想创建两个使用全局初始化实例的静态方法,但我无法做到这一点。
通过声明如下实例:
它给出编译错误:
CS0106 修饰符“static”对此项目无效
它给出编译错误:
CS8421:静态本地函数不能包含对“tableservers1”的引用。
这是所有代码program.cs:
using SingletonApp;
static TableServers tableservers1 = TableServers.GetInstance();
static TableServers tableservers2 = TableServers.GetInstance();
Console.WriteLine("Hello, World!");
for (int i = 0; i < 5; i++)
{
Host1();
Host2();
}
Console.WriteLine();
static void Host1()
{
Console.WriteLine("Host1 Next server is: " + tableservers1.GetNextServer());
}
static void Host2()
{
Console.WriteLine("Host2 Next server is: " + tableservers2.GetNextServer());
}
Run Code Online (Sandbox Code Playgroud)
请有人可以解释我们如何使用这个新的 minified program.cs,特别是使用全局实例和变量以及创建方法。
Gur*_*ron 13
从C# 10 开始,您可以通过引入(在顶级语句文件的底部或单独的文件中)来实现此目的:public partial class Program
// rest of your top-level statement code
// ...
public partial class Program
{
static TableServers tableservers1 = TableServers.GetInstance();
static TableServers tableservers2 = TableServers.GetInstance();
}
Run Code Online (Sandbox Code Playgroud)
但我认为切换到“旧式”Program类或将静态字段移动到另一个类将是更好的选择。