asp.net 关于静态方法问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 22:09:11
在书上看到下面这个方法,执行数据查询操作的,它定义的是静态的,如果定义成非静态的可不可以啊,有什么区别啊?

public static DataSet(string sql,IParam[] params)
{
IDBAccess baseDao = new BaseDao();
Return baseDao.QueryData(sql,params);
}
如果从性能角度来考虑那

静态方法,比如你看到的这个,通常是写在Asp.net的APP_CODE文件夹的静态类当中。

静态方法的好处是,你不需要实例化这个类,就可以调用该方法

比如
class C1
{
public static void Foo(){...}
public void Bar() {....}
}

你要调用静态方法Foo的话,只需要C1.Foo()就行了
你要调用非静态方法Bar的话,就得
C1 c = new C1();
c.Bar();

当类中的一个方法与类的实例没有什么关系时(比如公共方法),最好定义为静态方法,以免调用起来麻烦。

当然是可以的,不过你定义不同在调用的时候也不同。
你的方法public static DataSet(string sql,IParam[] params)首先也是定义在某个Class里的,假设它是定义在类MyClassA里的,那么我要在另外一个类MyClassB里调用它,代码是:
MyClassA.DataSet();
调用方法是直接用 类名+方法名

如果你将DataSet()定义为非静态的:
public DataSet(string sql,IParam[] params)
那么在类MyClassB里调用它,代码就要变成:
MyClassA mc=new MyClassA();
mc.DataSet();
看以看到,调用方法是类的实例名+方法名

多去体会一下静态方法和非静态方法的区别,静态方法属于类的,可以用类名直接调用,非静态方法属于类的实例的,需要用实例名去调用

如果定义成非静态的可不可以啊,有什么区别啊。
一定可以的。
类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。