小编Rya*_*Liu的帖子

有没有办法检查两个具有相同值的字符串是否是 C# 中的同一实例?

C# 中的 String 是一种引用类型,但它重写了==, 和Equals()来比较字符串的值。有没有办法检查两个字符串是否确实是同一实例并指向同一内存?

EvenObject.ReferenceEquals("A", "A")会返回 true,因为它只是调用==.

这个测试将会通过。所以仍在等待检查是否相同的实例。

  [Test]
        public void TestString()
        {
            var a = "A";
            var b = "A";
            var c = a;
            Assert.IsTrue((object)a == (object)b);
            Assert.IsTrue(ReferenceEquals(a,b));  //It is same as objA == objB
            Assert.IsTrue(Object.ReferenceEquals(a,b));

            Assert.AreEqual(a,b);
            Assert.AreSame(a, b);

            unsafe
            {
                TypedReference tra = __makeref(a);
                IntPtr ptra = (IntPtr)(&tra);


                TypedReference trb = __makeref(b);
                IntPtr ptrb = (IntPtr)(&trb);

                Assert.AreNotEqual(ptra, ptrb);
                Assert.AreNotSame(ptra, ptrb);


                TypedReference trc = __makeref(c);
                IntPtr ptrc = (IntPtr)(&trc);

                Assert.AreNotEqual(ptra, …
Run Code Online (Sandbox Code Playgroud)

c# string equality

0
推荐指数
1
解决办法
542
查看次数

标签 统计

c# ×1

equality ×1

string ×1