[英]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.