如何创建全局可见的变量

本文关键字:变量 全局 何创建 创建 | 更新日期: 2023-09-27 17:50:22

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

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从任何地方访问它。

然而,我认为这是一个糟糕的设计决策。在应用程序的整个生命周期中拥有一个唯一的实时连接实例不会给您带来任何好处。事实上,它实际上会让你的生活变成一场噩梦,原因有很多,比如不可预测的连接断开,不合时宜的打开/关闭和多线程地狱。

您应该使用某种连接工厂来创建一个正确初始化的连接对象并返回它。那个工厂方法可以被全局访问。

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

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

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

这里的using语句将确保你的连接实例将被正确处置,一旦你完成它,释放你的应用程序从无用的开销和缓解服务器保持一个开放的通道到客户端。

ADO。. NET最佳实践声明:

高性能应用程序保持到数据源的连接使用最少的时间,(…)

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

使用单例模式

    class MySqlConnection
    {
        private static MySqlConnection _Instance;
        public static MySqlConnection Instance()
        {
            return _Instance == null ? _Instance = new MySqlConnection () : _Instance;
        }
    }

也许您可以在某些App.configWeb.config中声明连接字符串

然后在每次需要时从那里读取connectionString。

就像下面这个例子:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="MyConnection 
    connectionString="Data Source=.;Initial Catalog=MyDB;Integrated Security=True"/>
  </connectionStrings>
</configuration> 

这里有一些关于这个的信息:

http://msdn.microsoft.com/es-es/library/ms254494 (v = vs.110) . aspx

嗨,如果你使用WPF应用程序,你可以在一个类中声明你的变量,这个类是一个应用程序的分部类。

  1. 创建一个你想要的类名。

后面的代码:

public partial class App
{
    #region - your global variable - 
    public MySqlConnection Cn
    {
        get;
        set;
    } ="blablablá"
    #endregion
 }

在你的项目的任何部分,你可以这样使用它:

在xaml:

<TextBlock x:Name="TextBlockExampler" Text="{Binding Cn, Source={x:Static Application.Current}"/>

后面的代码:

using System.Windows;
.....
string texting = (Application.Current as App).Cn
....