C# 如何从非静态类创建静态类
所以我有一个非静态类C# 如何从非静态类创建静态类,c#,class,oop,C#,Class,Oop,所以我有一个非静态类 public class Client { private string _firstname, _lastname, _address; //Public constructors and Properties would go here// } 我想知道是否有任何方法可以从这个类中生成一个静态类,我可以使用它来存储当前正在使用的客户端的数据。我想您正在寻找单例模式。此模式只允许创建客户机类的单个实例,并提供对该实例的简单访问 要实现它,请使用以下代码
public class Client
{
private string _firstname, _lastname, _address;
//Public constructors and Properties would go here//
}
我想知道是否有任何方法可以从这个类中生成一个静态类,我可以使用它来存储当前正在使用的客户端的数据。我想您正在寻找单例模式。此模式只允许创建客户机类的单个实例,并提供对该实例的简单访问 要实现它,请使用以下代码: 注意:还应将类的构造函数设置为private
现在,您可以使用
Client.instance
访问(并隐式创建实例)您的客户机类。好的,这里有两种不同的方法
首先,也是最重要的:确保这是你真正想要做的。如果有人正在连接到您,而您正在存储有关客户机的信息,那么您可能需要该类的非静态实例。比如:
public string OuterRequest(string someInput)
{
Client requestor = new Client(); // Client instance for this request
DoSomething(requestor);
DoSomethingElse(requestor);
return "Something";
}
public class Client
{
private Client() { } // private constructor
public static Client instance = new Client();
// usage: Client.instance.WhateverPropertyYouWant;
}
。。。明白我的意思了吗?有人生成一个请求,您创建一个新的客户机类实例来存储该信息。有什么需要这些数据的吗?您将实例传递给他们,以便他们可以获得有关请求/客户机的信息
接下来,如果你确定你真的想要一个实例
在这种情况下,下一个选择是做所谓的“单例”。最终,您需要两个构建块来实现这一点:
public string OuterRequest(string someInput)
{
Client requestor = new Client(); // Client instance for this request
DoSomething(requestor);
DoSomethingElse(requestor);
return "Something";
}
public class Client
{
private Client() { } // private constructor
public static Client instance = new Client();
// usage: Client.instance.WhateverPropertyYouWant;
}
你只需要一个简单的静态类。为什么?因为,通过这种方式,您可以创建一个单元测试,该测试可以启动客户端类的第二个实例来测试功能,而不会弄乱客户端类的主/常规实例的属性等。Put
static
作为访问修饰符。为什么要使该类成为静态的?只需创建这个类的一个实例并使用它。这样,当您处理不同的客户端时,您可以创建一个新实例。您可以在客户端类中包含一个静态字段/属性,该字段/属性将保存您正在处理的当前客户端实例。也就是说,像这样的全球国家通常是个坏主意。让您正在使用的客户端仅限于执行工作的代码。正如TJ所说,只需添加静态。你的问题不够详细。对于静态类来说,该类看起来不太合适——你真的只有一个客户端吗?从来没有列表
?