C#中null和空的区别,==和Equals()方法的区别
来源:互联网 发布:淘宝客助手有手机版吗 编辑:程序博客网 时间:2024/05/08 04:48
问题来自于对控件的Text属性理解错误。
一:null和空的区别
1.声明的string类型的变量和属性以及字段在未赋值的情况下均为null,这个null不仅仅表示为无字符,更表示为空的引用。
比如:string userName;此时判断userName是否为空应该是if(userName==null)而不是if(userName==“”),并且使用userName.Equals(null)或userName.Equals(“”)均为错的,因为此时userName是个空引用,根本无法调用Equals()方法。但是如果声明为string userName=“”,则上述方法均成立。但是此时userName并不是null而是空值。
2.所有控件的Text属性的在未赋值的情况下是空值(""), 而不是null。
二:==和Equals()的区别
在此之前先说说内存的分类(从编程角度来说)
1)静态内存:存放静态变量,在整个程序运行期一直存在,空间中的值可以改变,但不用另辟空间(针对一个变量指向的静态空间)。类中的静态成员只能通过类名来访问,而不能通过对象和this来访问。非静态的可以访问静态的,但静态的不能访问非静态的,只能访问静态的。
2)寄存器:暂时未理解。
3)堆内存:实例(即使用new关键字创建的实例)
4)栈内存:局部变量、临时变量、值类型变量,地址(引用:4个字节)
值类型的变量放在堆中,而引用放在栈中,期实例放在堆中。==是进行值比教,而Equals()是进行引用比较。
例子:
例子1:
string user1 = "tiger";
string user2 = "tiger";
Console.WriteLine((user1==user2));//打印true
Console.WriteLine((user1.Equals(user2)));//打印true
例子2:
string[] user1 ={"user1","user2"};
string[] user2={"user1","user2"};
Console.WriteLine((user1==user2));//false
Console.WriteLine((user1.Equals(user2)));//false
- C#中null和空的区别,==和Equals()方法的区别
- java判断list为空、xxx==null和xxx.equals(null)的区别
- !=null和equals的区别
- C#中null和空和的区别
- ==和equals的区别 null和""的区别
- C#中==和Equals()的区别
- xxx==null和xxx.equals(null)的区别
- java中“”和null的区别以及==和equals的区别
- null和“”,==和equals()的混用和区别
- C#中equals和==的区别和用法
- Java中equals()方法和==的区别
- Java中equals()方法和“==”的区别
- java中==和equals()方法的区别
- C#的==运算符和Equals()方法区别
- c# Equals和==的区别
- C#中==和equals的区别
- C#中equals和==的区别
- c#中"=="和equals的区别
- 关于未定义行为的一些研究
- 如何创建自定义winForm控件 以及添加事件属性
- pdf格式和图片格式文本--转换为Word格式
- 能力与心态
- 我们在跌跌撞撞中进步。。_校园支撑系统开发近况简述
- C#中null和空的区别,==和Equals()方法的区别
- C语言记录
- 我常用的firefox插件
- ASP.NET中让图片以二进制的形式存储在数据库中
- irrlicht3d简介
- php图片水印与缩略图
- Window下创建进程和执行命令行程序的方法
- 在Irrlicht中使用Newton物理引擎SDK
- 汇编语言学习记录--第一个汇编程序