是否需要实例化一个C#静态类

本文关键字:一个 静态类 实例化 是否 | 更新日期: 2023-09-27 18:25:55

我是一名新的.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())
{
    ...
}

请告知。

是否需要实例化一个C#静态类

否,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;

如果您的静态类是在单独的项目中定义的,请在project Explorer中添加对它的引用:http://msdn.microsoft.com/en-us/library/wkze6zky(v=vs.80).aspx然后将名称空间添加到"using"-块中。

您可以通过删除"public static class"中的satic来尝试:

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

它会起作用,但在添加一些非静态属性或方法之前,实例什么都做不了。

类创建有状态对象,我们在这些对象上执行各种操作。为此,我们必须声明和实例化对象。

static类/方法是无状态的。大多数情况下,我们只希望static方法接收某些参数执行操作返回值/状态

它们不应该存储任何我们需要类数据成员的中间结果。

所以,简单地说,static class不是实例化的!