繁体   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