簡體   English   中英

公共靜態屬性不會在智能感知中顯示

[英]public static property won't show in intellisense

我正在慢慢學習C#,並對代碼有些困惑。 我這里有我的課程的簡化版本,用於數據庫連接設置

public class DatabaseSettings
{
    private static string connectionString = string.Empty;

    public static string ConnectionString
    {
        get 
        {
            return connectionString;
        }
        private set
        {
            connectionString = value;
        }
    }

    public bool TestConnection()
    {
        bool _returnVal = false;
        string _connectionString = String.Format("Data Source={0};Persist Security Info=False", databaseLocation);

        using (SqlCeConnection connection = new SqlCeConnection(_connectionString))
        {
            try
            {
                connection.Open();
                connectionString = _connectionString; // sets the value of the connection string here
                _returnVal = true;
            }
            catch (SqlCeException e)
            {
                // other codes here
                _returnVal = false;
            }
            finally
            {
                connection.Close();
            }
        }
        return _returnVal;
    }

    // other methods here
}

現在在我的Main Class ,我很困惑這里發生的事情。 當我嘗試此代碼時:

string _databaseLocation = "database path";
DatabaseSettings _dbaseSetting = new DatabaseSettings(_databaseLocation, true);
_dbaseSetting.TestConnection();
string newConnectionString = _dbaseSetting.ConnectionString;
//                                        ^ i got an error here
// Member 'SQLCE_Sample.ClassList.DatabaseSettings.ConnectionString.get' 
// cannot be accessed with an instance reference; 
// qualify it with a type name instead  

下面的這個工作正常,沒有錯誤,但是問題是我得到了一個空字符串:

string _databaseLocation = "database path";
DatabaseSettings _dbaseSetting = new DatabaseSettings(_databaseLocation, true);
string newConnectionString = DatabaseSettings.ConnectionString;

我真正想要的是創建一個具有public method的類,該public method 測試從應用程序到數據庫的連接 該方法內部包含設置連接字符串值的語法。 然后,我還需要一個property ,該property無需實例化類即可檢索連接字符串的值這就是我添加static關鍵字的原因 )。 我怎么可能呢?

看來您要訪問(靜態地)由類的實例設置的屬性的值。 因此,您所需要做的就是監聽編譯器錯誤-將屬性作為靜態引用而不是實例引用進行訪問。 更改:

string newConnectionString = _dbaseSetting.ConnectionString;

至:

string newConnectionString = DatabaseSettings.ConnectionString;

當然,在嘗試像這樣靜態訪問TestConnection之前,您需要確保在實例上調用TestConnection 否則, ConnectionString將為null。

您的公共靜態變量和靜態屬性具有相同的名稱。 重命名它們之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM