String first = "hehe";
String second = "hehe";if(f1==s1)
Console.WriteLine("相等");
else
Console.WriteLine("不相等");这个执行结果是相等,我有些不理解,我知道String已经创建就是不变的
但是我还是不理解为什么上面的结果是相等,String类型不是引用类型么?
String second = "hehe";if(f1==s1)
Console.WriteLine("相等");
else
Console.WriteLine("不相等");这个执行结果是相等,我有些不理解,我知道String已经创建就是不变的
但是我还是不理解为什么上面的结果是相等,String类型不是引用类型么?
解决方案 »
- 如何用wmi 重启某个服务
- 高分诚心求教!请高手教我如何用WebClient自动填写Post表单并提交
- c#关闭最小化到托盘区和tabcontrol控件
- webservice的问题
- 用HttpWebRequest登陆这个网站https://esales.tiancity.com/frmLogin.aspx
- jquery解析json
- 继承的问题
- DataGrid的OnItemCreated 事件奇怪问题
- 在c#中怎样调用net send 发消息
- 一个菜鸟的问题:为什么在ASP.net应用程序中添加的控件不能显示出来?
- 如何获取程序的图标???
- 有关文件操作的问题,大家帮我想想怎么样处理才是最好的?
String first = new String("hehe");
String second =new String("hehe");first和second就肯定不一样了
char[] tmp2={'h','e','h','e'};String first = new String(tmp);
String second = new String(tmp2);if(first==second)
Console.WriteLine("相等");
else
Console.WriteLine("不相等");即使是这样写,结果仍然是相等,为啥???
char[] tmp={'h','e','h','e'};
char[] tmp2={'h','e','h','e'};object first = new String(tmp);
object second = new String(tmp2);
if(first==second)应该是不相等
如果在java里,你的结果是对的,呵呵
String second = "hehe";我可以肯定的告诉你,这两个字符串的引用也是一样的,听说过字符串池没?
如果比较值的话,用Equals方法就好了,为什么要重写==???
个人感觉还是更习惯使用==来比较...
可以通过许多方法比较两个字符串。对于等同和不等同比较,主要差别当然在于,是比较引用(两个字符串指向同一对象)还是比较值(两个字符串包含相同的字符)。对于等同比较和关系比较,另一个主要差别在于,是使用当前环境的排序顺序,还是使用字符串中各个字符的原始序号值。(还有一个较小的差别,即比较时是否区分大小写。)比较的默认设置是使用它们所在线程的当前环境并区分大小写。通常,此设置就是您需要的设置。== 运算符调用 String.Equals,后者将执行区分环境和大小写的比较。如果您希望使用 C# 比较引用,可以将两个字符串引用都强制转换为 Object,或者使用 Object.ReferenceEquals。
String second =new String("hehe");first和second就肯定不一样了
这样写无法通过啊,
但是String first = "hehe";
String second = "hehe";if(f1==s1)
Console.WriteLine("相等");
else
Console.WriteLine("不相等");肯定相等.你的定义类型一样,不过是变量名不一样,能不等吗,