簡體   English   中英

是否需要實例化C#靜態類?

[英]Does a C# static class need to be instantiated?

我是新的.NET開發人員。 我想知道C#中的static class是否需要實例化嗎? 我為數據庫連接創建了一個class

public static class ConnectionHelper
{
    public static SqlConnection GetConnection()
    {
        return new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ToString());
    }
}

我正在C#應用程序中實例化此類,並收到以下錯誤:

名稱“ ConnectionHelper”在當前上下文中不存在

相關代碼:

using (var cn = ConnectionHelper.GetConnection())
{
    ...
}

請指教。

不, static class不需要實例化。 不能被實例化,這就是類聲明中static關鍵字的意義。

您也沒有實例化它。 您要做的是從靜態類中調用靜態方法。 很好。 但是實例化一個類需要new關鍵字。

您可能在文件頂部缺少using指令進行編譯。

我認為您缺少名稱空間。

將ConnectionHelper的名稱空間添加到“ using”塊中。 例如:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ConnectionHelperNamespace;

如果您的靜態類在單獨的項目中定義,則在項目資源管理器中為其添加引用: http : //msdn.microsoft.com/zh-cn/library/wkze6zky( v=vs.80) .aspx ,然后添加名稱空間“使用”塊。

您可以通過刪除“ public static class”中的satic來嘗試此操作:

public class ConnectionHelper
{
    public static SqlConnection GetConnection()
    {
        return new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ToString());
    }
}

它可以工作,但是在添加一些非靜態屬性或方法之前,該實例無法執行任何操作。

類創建有狀態的對象-我們對其執行各種操作。 為此,我們必須聲明和實例化對象。

static類/方法是無狀態的。 通常,我們只希望static方法接收某些參數執行操作返回值/狀態

它們不應存儲我們需要類數據成員的任何中間結果。

因此,簡單實例化的static class不會實例化!

暫無
暫無

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

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