gpt4 book ai didi

c# - 如何创建一个全局可见的变量?

转载 作者:行者123 更新时间:2023-11-30 13:14:54 25 4
gpt4 key购买 nike

如何声明一个变量并在所有文件中使用它?例如我有:

MySqlConnection cn = new MySqlConnection("blablabla");

我想在所有文件中使用 cn 而不声明它。

最佳答案

您问题的直接答案是将其公开和静态化:

public static class Session
{
static MySqlConnection _connection;

public static MySqlConnection Connection
{
get
{
if (_connection == null)
{
// instantiate _connection here
}

return _connection;
}
}
}

然后您可以使用 Session.Connection 从任何地方访问它。

但是,恕我直言,这是一个糟糕的设计决策。在应用程序的整个生命周期中拥有唯一的实时连接实例不会以任何方式使您受益。事实上,由于许多不同的原因,它实际上会让您的生活成为一场噩梦,例如不可预测的连接断开、不合时宜的打开/关闭和多线程 hell 。

您应该使用某种连接工厂来创建正确初始化的连接对象并将其返回。 工厂方法可以在全局范围内访问。

public static ConnectionFactory
{
public static MySqlConnection CreateConnection()
{
// create and return your MySqlConnection object
}
}

然后,从您代码中的任何地方:

using (var cn = ConnectionFactory.CreateConnection())
{
// do data-related stuff
}

此处的 using 语句将确保您的连接实例在您完成使用后将被正确处理,从而使您的应用程序免于无用的开销,并使服务器免于保持与客户端的开放 channel .

作为ADO.NET best practices状态:

High performance applications keep connections to the data source in use for a minimal amount of time, (...)

在构建数据驱动的应用程序时,请牢记这一点。

关于c# - 如何创建一个全局可见的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22429285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com