在ASP.NET(C#)的项目开发中什么时候使用static!什么时候不使用这个关键字!
比如一个判断是否为空的函数
//方法一:带有static的函数
public static bool ISNull(string aaa)
{
if(aaa=="")
{
return false;
}
else
{
return true;
}
}
//方法一:不带static的函数
public bool ISNull(string aaa)
{
if(aaa=="")
{
return false;
}
else
{
return true;
}
}
上面只是写了两个基本的方法!请问像这样的什么时候用方法一,什么时候该用方法二呢?设计原理是什么?
比如一个判断是否为空的函数
//方法一:带有static的函数
public static bool ISNull(string aaa)
{
if(aaa=="")
{
return false;
}
else
{
return true;
}
}
//方法一:不带static的函数
public bool ISNull(string aaa)
{
if(aaa=="")
{
return false;
}
else
{
return true;
}
}
上面只是写了两个基本的方法!请问像这样的什么时候用方法一,什么时候该用方法二呢?设计原理是什么?
{
public void 飞往(I目的地 x);
}你实现一个飞机的“飞往”方法的时候,内部可能需要使用到本飞机的以及目的地的属性和方法,目的地的方法就是面向对象的,是通过最终的具体实现了“I目的地”的类型的对象实例来调用的面向对象的方法(也就是说设计时这个参数类型并不确定,而是可以使用任何接口实现或者类型子类来实现),而不是直接调用面向某个类型的方法。
class SingletonDemo
{
private static SingletonDemo theSingleton = null; private SingletonDemo() {} public static SingletonDemo Instance()
{
if (null == theSingleton)
{
theSingleton = new SingletonDemo();
}
return theSingleton;
}
}
调用时使用
void Test()
{
SingletonDemo s1 = SingletonDemo.Instance();
.......
}这是面向类型的,而不是面向对象的。当我们以接口(或者类型)来设计软件时,应该是先实现其接口规格,然后才重构其内部实现,所以会写为
void Test(MyApplication app)
{
SingletonDemo s1 = app.Instance();
.......
}这才是面向对象的写法。
实用点:工具类中的方法可以考虑static,读取配置文件信息可以考虑static,常量static final,
再具体一点,如果这个方法涉及的对象跟具体实例无关,都可以标为静态。
比如说
class a
{
classb b = new classb();
void methoed1() //这里 这个方法就不能为static
{
b.xxx = "xxxxxx";
}
}