用了好长时间3.5了,今天突然发现变量赋值和2.0有区别以前一个变量是否赋值,编译器是不知道的,而现在他却能报错:使用了未赋值的变量这是否就可以判断一个变量是否赋值了呢看下面的代码string c;
response.write(c);2.0是报未将对象引用设置到对象实例
而在3.5中,是报:使用了未赋值的变量,并且值类型和引用类型都报这个错,这不就是说,可以知道变量是否赋值了吗?在2.0中,一直苦于不能简单的知道一个变量是否赋值,尤其是值类型(需要借助第三方变量),而在3.5中,是不是就可以了呢求教如何判断一个变量是否赋值!!!
response.write(c);2.0是报未将对象引用设置到对象实例
而在3.5中,是报:使用了未赋值的变量,并且值类型和引用类型都报这个错,这不就是说,可以知道变量是否赋值了吗?在2.0中,一直苦于不能简单的知道一个变量是否赋值,尤其是值类型(需要借助第三方变量),而在3.5中,是不是就可以了呢求教如何判断一个变量是否赋值!!!
然后捕捉异常..判断该异常是否是"使用了未赋值的变量"的异常.
这样甚好,但是try是很消耗资源的没有其它办法吗
string s= string.Empty;
错误信息为:Use of unassigned local variable XXX
建议楼主使用英文版的VS,有时候翻译是会出一点点差错的!
打开IDE的提示就行,就象你上面说的,如果使用了未赋值的变量会有提示的
然后你改一下代码就行了最好的习惯是尽量定义时就进行初始化。
老大还是理解我的意思的,但看来是没法知道变量是否赋值了,在js,php中就有这样的函数,如isSet
直接 if(xx==null)
php中,isset就是判断是否是null。不要望文生义,其实并不是去判断是否赋值过,而只是判断是不是null。
你说如何判断一个变量是否赋值,其实对于引用类型,只要判断其是否为null就可以了。如果是引用类型,由于其在被定义时就会赋上初始值,所以你也没办法去作个判断。
这样定义int ? i=null;
如果是2.0的话
需要自己规定了
对于C#来讲就是是否使用=
至于赋的值是null还是具体有效值,那都是赋了值的
只有定义后未进行过赋值的才叫未赋值
VS2005、2008的IDE都是这样判断的
哪怕你赋了个null,它都认为赋过值了
Response.Write(s ?? "没值");
int? i = null;
Response.Write(i ?? "没值");
int i = 0;
Response.Write(i == default(int) ? "- -!" : i);