我是一名新的.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())
{
...
}
请告知。
答案 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
没有实例化!