如何在 Console App .NET 6.0 的 Program.cs 中全局声明静态实例
How to declare static instance globally in Program.cs of Console App .NET 6.0
我已经创建了一个控制台应用程序 .NET 6.0
来学习单例模式。
但我观察到 Program.cs
文件发生了重大变化。
namespace
、class
和 Main
方法已从 .NET 6.0
中的 program.cs
中删除。
我相信将在 program.cs
中编写的代码将被视为在 Main
方法中。
但是我想创建两个使用全局初始化实例的静态方法,但我做不到。
通过如下声明实例:
它给出编译错误:
CS0106 The modifier 'static' is not valid for this item
在如下静态方法中使用实例时:
它给出编译错误:
CS8421: A static local function cannot contain a reference to
'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());
}
请有人解释我们如何使用这个新的缩小版 program.cs
,特别是使用全局实例和变量以及创建方法。
与 一样,从 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();
}
但我认为切换到“旧样式”Program
class 或将静态字段移动到另一个 class 将是更好的选择。
我已经创建了一个控制台应用程序 .NET 6.0
来学习单例模式。
但我观察到 Program.cs
文件发生了重大变化。
namespace
、class
和 Main
方法已从 .NET 6.0
中的 program.cs
中删除。
我相信将在 program.cs
中编写的代码将被视为在 Main
方法中。
但是我想创建两个使用全局初始化实例的静态方法,但我做不到。
通过如下声明实例:
它给出编译错误:
CS0106 The modifier 'static' is not valid for this item
在如下静态方法中使用实例时:
它给出编译错误:
CS8421: A static local function cannot contain a reference to '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());
}
请有人解释我们如何使用这个新的缩小版 program.cs
,特别是使用全局实例和变量以及创建方法。
与 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();
}
但我认为切换到“旧样式”Program
class 或将静态字段移动到另一个 class 将是更好的选择。