每题20分,谢谢!
1.具体类是在实例化的时候分配内存等资源,那么抽象类呢?这个抽象类中有static方法,这个类的这些方法是在程序加载时加载整个抽象类吗?
2.抽象类中的静态字段,只在第一次运行实例化,关掉IE第二次运行就不实例化了?例如类库中的下代码
public abstract partial class test
{
public static SqlConnection conn = new SqlConnection(); public static string c(){ if (conn == null) c = "null";
else
{ c = "done"
conn == null;
} return c;
}
}
然后在页面中调用Response.Write(test.c());,第一次结果是done,关掉IE,第二次结果是null,说明conn只在第一次运行时被实例化了,而第二次没有。
1.具体类是在实例化的时候分配内存等资源,那么抽象类呢?这个抽象类中有static方法,这个类的这些方法是在程序加载时加载整个抽象类吗?
2.抽象类中的静态字段,只在第一次运行实例化,关掉IE第二次运行就不实例化了?例如类库中的下代码
public abstract partial class test
{
public static SqlConnection conn = new SqlConnection(); public static string c(){ if (conn == null) c = "null";
else
{ c = "done"
conn == null;
} return c;
}
}
然后在页面中调用Response.Write(test.c());,第一次结果是done,关掉IE,第二次结果是null,说明conn只在第一次运行时被实例化了,而第二次没有。
public abstract partial class test
{
public static SqlConnection conn = new SqlConnection(); public static string c(){
string a;
if (conn == null)
a = "null";
else
{ a = "done";
//conn = null;
} return a;
}
}因为你使的是静态方法 所以当你工程运行时就已经加载 相当于全局变量 只有把工程停止再从新启动时才会变成第一次加载时的样子 所以你第一次运行 赋值为done后 再第二次加载时还保留第一次加载时的值是必然的 你要想一直让他为done 除非你把那行给注释掉了
c是什么啊?????看似好像是方法名...方法可以赋值?你还能编绎过去???---估计是我知识面太浅了...
你说的“实例化的时候分配内存等资源”是对的
至于后面说的抽象类 因为抽象类并没有办法实力化 在里面的static方法 只能通过类名.方法名去调用
所以只有在当你调用的时候 这个类 以至这个类的这些方法 才会真正的被加载 才会真正的被分配内存等资源,而且是一直占用内存资源,除非停止整个工程。
=============================================================================
是加载整个抽象类 毕竟是你用抽象类调用 所以要先加载类才能调用里面的方法
2。如果程序发布到服务器,“停止整个工程”应该怎样理解?是客户端关掉浏览器吗?
=============================================================================
你网站是通过部署到服务器IIS上供客户端用户浏览,所以从起服务器就可以了,或停止IIS服务