class Test { static void Main() { string s = "Test"; string t = string.Copy(s); Console.WriteLine(s == t); Console.WriteLine((object)s == (object)t); } }各位高手能不能詳細講解一下這兩個比較多的區別。
解决方案 »
- 请问GBK编码的一个问题,把已转的转成汉字
- 关于indexer 的问题
- C#如何判断webbrowser页面中的层加载状态?
- C#.net 中访问Sql数据库SqlDataAdapter,出现问题:超时时间已到...
- 消息队列的问题,高手请进!!
- 需用户验证的代理应如何设置???
- 简单问题:C/S结构中,选择路径保存文件的问题
- =Fields!HuidanDeal.Value.Substring(20,8)当为空的时候报错
- 为什么不能在另一个线程里打开一个新的Form?窗口闪了一下就消失了。
- 问在.net下调用非.net环境下开发的组件
- Keypress Keydown Keyup
- 新手求教 。C# 连接数据库问题。
class Test {
static void Main() {
string s = "Test";
string t = string.Copy(s);
Console.WriteLine(s == t);
Console.WriteLine((object)s == (object)t);
}
}
对于预定义的值类型,如果操作数的值相等,则相等运算符 ( ==) 返回 true,否则返回 false。 对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。 对于 string 类型, == 比较字符串的值。 备注用户定义的值类型可重载 == 运算符(请参见 operator)。 用户定义的引用类型也可重载 == 运算符,尽管在默认情况下,无论对于预定义的引用类型还是用户定义的引用类型, == 的行为都与上面描述的相同。 如果重载 ==,则还必须重载 !=。 在枚举时通常允许整型运算。示例VBC#C++F#JScript以带有颜色区分的格式查看复制到剪贴板打印class Equality
{
static void Main()
{
// Numeric equality: True
Console.WriteLine((2 + 2) == 4); // Reference equality: different objects,
// same boxed value: False.
object s = 1;
object t = 1;
Console.WriteLine(s == t); // Define some strings:
string a = "hello";
string b = String.Copy(a);
string c = "hello"; // Compare string values of a constant and an instance: True
Console.WriteLine(a == b); // Compare string references;
// a is a constant but b is an instance: False.
Console.WriteLine((object)a == (object)b); // Compare string references, both constants
// have the same value, so string interning
// points to same reference: True.
Console.WriteLine((object)a == (object)c);
}
}
/*
Output:
True
False
True
False
True
*/
結果為
True
False
object)s == (object)t 装箱后判断在堆栈的地址是否相同