请问在C#中,静态变量和非静态变量之间的区别?

请问高手,在C#中说,静态变量是在所属类被装载时创建的,而非静态变量是在类被实例化时创建的,请问一下这该怎么理解呢/什么类被装载,类被实例化到底该怎么理解,请高手解释一下吧。谢谢

静态变量就是不需要对象,直接使用“类名”加“.”的方式就可以访问,比如:
public class A
{
public static int a;
}
可以使用A.a来访问。
A.a = 5;
而非静态变量必须先创建对象,通过对象访问,比如:
public class B
{
public int b;
}
必须先创建B的对象,然后通过对象访问:
B objectB = new B();
B.b = 5;

静态变量另一个重要特征是所有的对象共享这一个变量,还是用刚才的A类说明:
A a1 = new A();
A a2 = new A();
a1.a = 3;
a2.a = 5;
最后a的值是5,因为a1和a2共享a这个静态成员变量。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-07
静态程序初始化就分配内存地址,对非静态的在调用的时候在分配内存.看需求做处理!
用过委托的就知道,可以把类方法当作参数一样传递进去,类实例化就是 A a=new A().A是一个非静态类哦..一般静态的类的话就不要实例话.比如
class A
{
public Method()
{}
}
static class B
{
public Method2()
{}
}

要使用Method方法的时候就得实例化类A 就得这样
A a =new A()
a.Method()
而要使用Method2方法的时候不必实例化类可以直接调用:B.Method2()就ok了..

慢慢理解吧...多使用这些..做店练习这个很好理解的..赶紧吧.孩子...面向对象...块过去了...面向切片编程又要出来了...学编程最主要还是学思想!!!追问

您推荐一些好的书籍吧,我刚走上工作岗位,可以用自己的哦工资买书了,请您推荐几本好一点的书吧,我基础确实是差,但是我想学回来,我真的很想

追答

书籍的话,有好多,前期网上找些C#基础的比如C#程序设计最好找清华北大的.那些书比较实在还有可以结合明日出版社的那本实战教程!在练习示例的时候去把基础补回来.最后看CRL VIA 第三版这本书相当给力,讲诉C# CLR工作原理等...最后可以了解IL等东西了...差不多了吧这也是我学C#的路子...呵呵,楼主可以参考.

本回答被网友采纳
第2个回答  2011-08-07
类加载是指:类的定义(就是你写的类的源代码)被读入C#的运行环境。
类 被实例化是指:new出这个类的一个对象。 这个实例化是由你写代码 new 产生的。
第3个回答  2011-08-08
先装载 再实例化

C#中的静态方法与非静态方法的区别是什么?
2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。 3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存, 这样,C#静态方法调用时无法判断非静态变量使用的内存地址。所以无法使用。而静态变量的地址对类来说是固定的,故可以使用。 C#静态方...

C#中static型变量和非static型变量有何不同
用static关键字符标识的程序元素是静态的,不用static标识的程序元素是非静态.两者的区别在于:静态的东西是在类型加载初始时初始化的,并且与类相关.非静态东西一般放在实例的构造函数中初始化,它是与特定类的实例相关的.

静态方法和非静态方法的区别是什么
在C#中,静态方法(Static Method)与非静态方法(Non-Static Method)的主要区别在于它们的生命周期、内存管理、效率、线程安全以及使用方式。首先,静态方法和静态成员变量在定义上,静态方法需要加上"static"修饰符。生命周期上,静态方法与静态变量属于类,自类装载后常驻内存,直到JVM关闭。而非静态方法...

C#中,静态类和非静态类的区别是什么?
静态类和非静态类的区别 静态类和非静态类的主要区别: 主要区别在于静态类不能实例化,静态类编译器能够执行检查确保不是偶然的添加实例成员,C#编译器会自动把它标记为sealed,静态类中不能创建非静态的方法,即静态方法中只能创建静态方法,但在非静态类中可以调用静态方法。 静态类的主要特性: ...

C# 两个窗体的变量访问问题
静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡;而非静态变量需要被实例化后才会分配内存。2.生存周期 静态变量生存周期为应用程序的存在周期;非静态变量的存在周期取决于实例化的类的存在周期。3.调用方式 静态变量只能通过“类.静态变量名”调用,类的实例不能...

C#中,静态的构造函数跟非静态的有什么区别?
静态构造函数是最早被调用的,只要有静态访问,那么就先调用静态构造函数。其他非静态构造函数会在调用完毕静态的成员之后才被调用。所以一般静态构造函数用来为静态成员初始化,或者作为单件模式中创建对象的唯一入口。例如:private static GoodsManager s_Instance;public static GoodsManager Instance { get{...

C# 面向对象 静态类和静态成员
在C#中,静态类和静态成员是面向对象编程中的重要概念。它们与非静态成员不同,静态成员属于类型本身而非特定对象,且不能通过实例引用。静态类不能实例化,只能通过类名直接访问其成员,如常数和类型声明。静态类可以有静态构造函数,在程序启动时或类被实例化前执行。静态成员的特点包括:仅包含静态方法...

C#中的静态变量和常量有什么具体的区别?请详细说一下,我看了概念总感觉...
静态变量也是变量,但就这一点就和常量不一样;常量的值是不可改变的,在程序运行的时候就已经决定了它的值;但是静态变量的值是可以在运行时被更改的,它们唯一的共同点只是在程序的一开始就存在于内存当中,仅此而已

static 全局变量 和非static全局变量的区别
1、static 全局变量称:静态外部变量或称静态全局变量。2、非static全局变量称:外部变量或称全局变量。3、区别是:用static声明的外部变量,只能供本文件内的函数调用,不能被其它文件的函数所调用。

在C#中静态函数和实例函数的区别?
静态变量 静态对象 静态函数和非静态函数的区别。(我的理解,大家看看对不对)先明确一下语言:asp.net C#1、静态变量:static string str1 = "1234";2、静态对象static SqlConnection cn = new SqlConnection();3、静态函数class aa{public static string test(string str){return str & "111";...

相似回答