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

时间:2013-08-01 06:27:24

标签: c# asp.net

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

请告知。

4 个答案:

答案 0 :(得分:3)

不,static class不需要实例化。 无法实例化,这是类声明中static关键字的重点。

你也没有实例化它。你要做的是从静态类中调用静态方法。那没关系。但实例化一个类需要new关键字。

您可能错过了文件顶部的using - 指令,以便进行编译。

答案 1 :(得分:1)

我认为你错过了命名空间。

将ConnectionHelper的命名空间添加到“using”-block中。 例如:

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”-block。

答案 2 :(得分:0)

您可以通过删除“public static class”中的静态来尝试此操作:

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

它可以工作,但在添加一些非静态属性或方法之前,实例无能为力。

答案 3 :(得分:0)

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

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

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

所以,简单地说,static class没有实例化!