关于空引用 请问一下什么是空引用?如何去用它,而且用的时候会有什么限制? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 空引用不引用任何内容“空引用”是某个类“类型”的变量引用了一个null。具体来说,就是类被初始化,不指向任何具体的某个实例化的类。 null?所谓空引用,就是某一类型的变量未和该类型的一个具体对象对应起来,而是和一个空值对应起来了在声明引用类型变量的时候如果未赋初值的话,其值默认为null空引用当创建的托管对象没有任何变量引用它时,就具备了垃圾回收条件如何去用它? 需要清除变量引用的对象时可以再次为其赋值为null.比如Graphics g=....,如果明确以后不应再使用或者防止它人误用,而又没有走出作用域,可以g.Dispose(),g=null,因为在调用一个空引用变量类型的成员函数时,会明确抛出一个异常. 而调用一个Dispose()的Graphics对象的成员函数时会发生什么? 没试过有什么限制?声明引用类型变量时未赋初值其值自动为空引用,其它情况看自己需要,有些时候为了某种目的可能要明确赋null值,而更经常的情况是不用理会 比如object obj = null;该表达式表示的意思就是一个“空引用”,就是声明obj指向的一个内存地址,而将该内存地址的值设置为null yangglemu兄有几个地方我想反驳一下 有可能我没有理解你的原意 如果有什么冒犯的地方请原谅 string a;这是声明引用,我反驳的地方就是这个状态系统并不会默认a为null 而应该是【未被使用】。如果这样的状态去参与变量的话 会出错的比如string a;if(a == null) 编译的时候就会出错所以必须要赋值string a = null;这个状态才是真正的a为null状态,引用类型包含一个地址或者引用,它指向内存中特定的位置,如果设置为null,那么显示的设置引用,让它不指向任何地方。如有不对的地方请见谅 假设用什么“内存地址”的概念来解释,而且又在解释中引入了“这个地址的值为null”,这是车轱辘话地用你要解释的东西来作为解释,越来越乱。 快乐乔巴兄弟,我可能没表述明确,我说的是类的全局变量,而不是函数中的局部变量比如class Test { string s; public Test() { if (s == null) Console.WriteLine("null"); } }编译的时候会警告:从未对字段“ConsoleApplication1.Test.s”赋值,字段将一直保持其默认值 null可以证实未赋初值的类的全局变量(引用类型),其值默认为null.如果是值类型,比如int,其值将默认为0 yangglemu兄顺便问一下为什么成员变量和局部变量会有这样的差异呢 任何引用类型实例的默认初始值都是null...“未被使用”仅仅是编译器发现了你会在它为null时试图使用它...16楼的例子仅仅是编译器认为s在为null时你并没有试图使用它...至于那个Test方法...对不起,编译器并不知道你会何时调用它,也就无从知道s在使用时是否为null...有没有问题是你的问题不是编译器的问题...与类级还是什么级变量没有任何关系... ···信誉保证高分急求···求一个算法 时间提取相减 函数参数较多时怎么办? 关于提高导入数据库的效率问题 用SQLDMO备份数据库的时候,引用命名空间后就发生错误了1 devexpress中xtragrid控件判断该行是否被选中怎样判断 谁有microsoft Asp.net开发范例 200分相送 关于串行通讯的一系列问题 C#中如何实现拖放? DirectX 9 for .net webbrowser显示跑位问题求助 请求帮忙
“空引用”是某个类“类型”的变量引用了一个null。具体来说,就是类被初始化,不指向任何具体的某个实例化的类。
在声明引用类型变量的时候如果未赋初值的话,其值默认为null空引用
当创建的托管对象没有任何变量引用它时,就具备了垃圾回收条件如何去用它? 需要清除变量引用的对象时可以再次为其赋值为null.比如Graphics g=....,如果明确以后不应再使用或者防止它人误用,而又没有走出作用域,可以g.Dispose(),g=null,因为在调用一个空引用变量类型的成员函数时,会明确抛出一个异常. 而调用一个Dispose()的Graphics对象的成员函数时会发生什么? 没试过有什么限制?声明引用类型变量时未赋初值其值自动为空引用,其它情况看自己需要,有些时候为了某种目的可能要明确赋null值,而更经常的情况是不用理会
该表达式表示的意思就是一个“空引用”,就是声明obj指向的一个内存地址,而将该内存地址的值设置为null
有几个地方我想反驳一下 有可能我没有理解你的原意 如果有什么冒犯的地方请原谅
string a;
这是声明引用,我反驳的地方就是这个状态系统并不会默认a为null 而应该是【未被使用】。
如果这样的状态去参与变量的话 会出错的
比如
string a;
if(a == null) 编译的时候就会出错
所以必须要赋值
string a = null;
这个状态才是真正的a为null状态,引用类型包含一个地址或者引用,它指向内存中特定的位置,如果设置为null,那么显示的设置引用,让它不指向任何地方。
如有不对的地方请见谅
比如
class Test
{
string s;
public Test()
{
if (s == null)
Console.WriteLine("null");
}
}
编译的时候会警告:从未对字段“ConsoleApplication1.Test.s”赋值,字段将一直保持其默认值 null
可以证实未赋初值的类的全局变量(引用类型),其值默认为null.如果是值类型,比如int,其值将默认为0
顺便问一下为什么成员变量和局部变量会有这样的差异呢