C# 在方法c之间传递字符串值#

C# 在方法c之间传递字符串值#,c#,string,methods,properties,C#,String,Methods,Properties,我有一个公共字符串需要在整个程序中使用 public string connectionString = null; 我指定的值如下所示: internal string accessString() { return connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data Source=" + DBFileName + ";" + @"Persist Secur

我有一个公共字符串需要在整个程序中使用

public string connectionString = null;
我指定的值如下所示:

internal string accessString()
{
    return connectionString =
        @"Provider=Microsoft.ACE.OLEDB.12.0;" +
        @"Data Source=" + DBFileName + ";" +
        @"Persist Security Info=False";
}
当我第一次运行该方法时,该值是正确的,但是一旦该方法的执行完成,该值将返回null

internal void selectDB()
    {
        try
        {
            OpenFileDialog choofdlog = new OpenFileDialog();
            choofdlog.Filter = "All Files (*.*)|*.*";
            choofdlog.FilterIndex = 1;
            if (choofdlog.ShowDialog() == DialogResult.OK)
            {
                DBFileName = choofdlog.FileName;
                connectionString = accessString();
                Saveproducts();
            }
            MessageBox.Show(connectionString);

        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }//select db ends
上述方法完美地获得了值

internal void writeContents()// read all the text files to the Data base
    {
        try
        {
            MessageBox.Show(connectionString);
}
}
上面的这个方法返回null,即使它在第二个方法成功地为connectionString赋值后运行


如何修复此问题,我不想使用静态会话来存储连接字符串,也可以使用

connectionString as Static variable

然后它将不会重置该值。

使用会话存储连接字符串,或者您可以使用

connectionString as Static variable
然后它将不会重置该值

如何更改此值,以便该方法在整个过程中创建此值 节目

您可以这样做,
accessString
现在总是返回有效的连接字符串

public string connectionString = null;
accessString();

internal string accessString()
{
    return string.IsNullOrEmpty(connectionString)? 
        @"Provider=Microsoft.ACE.OLEDB.12.0;" +
        @"Data Source=" + DBFileName + ";" +
        @"Persist Security Info=False" : connectionString;
}
如何更改此值,以便该方法在整个过程中创建此值 节目

您可以这样做,
accessString
现在总是返回有效的连接字符串

public string connectionString = null;
accessString();

internal string accessString()
{
    return string.IsNullOrEmpty(connectionString)? 
        @"Provider=Microsoft.ACE.OLEDB.12.0;" +
        @"Data Source=" + DBFileName + ";" +
        @"Persist Security Info=False" : connectionString;
}

你能展示更多你使用这个类的代码吗?您何时调用
accessString()
以及何时访问
connectionString()
?很难确切知道您做错了什么,但可能是由于某个对象的实例超出了范围-需要更多的代码来确认,所有当前的答案都是推测性的(虽然使
connectionString
静态可能会工作,但可能会导致其他问题,具体取决于您的应用程序)您是否可以显示使用该类的更多代码?何时调用
accessString()
以及何时访问
connectionString()
?很难确切知道您做错了什么,但可能是由于某个对象超出范围的实例造成的-需要更多的代码进行确认,所有当前的答案都是推测性的(尽管使
连接字符串
静态可能会起作用,但可能会导致其他问题,具体取决于您的应用程序)就我所知,你不能在一种方法中使用作废和退货啊……我的错,我忽略了它。谢谢@ChongChing更正。就我所知,你不能在一种方法中使用作废和退货啊……我的错,我忽略了它。谢谢@ChongChing更正。