You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何判断两个泛型<T>类型变量是否指向同一对象?

判断泛型变量是否指向同一对象

要判断两个泛型类型的变量是否指向同一个对象,直接用**==运算符**即可——它专门用来比较引用类型的内存地址,完全不受泛型类型的影响。

示例代码实现

  1. 先定义Person类:
class Person {
    private String name;
    public Person(String name) {
        this.name = name;
    }
    // 可选:重写toString方便查看输出
    @Override
    public String toString() {
        return "Person{name='" + name + "'}";
    }
}
  1. 测试泛型变量的引用相等性:
public class ReferenceCheckDemo {
    public static <T> boolean isSameObject(T variableA, T variableB) {
        return variableA == variableB;
    }

    public static void main(String[] args) {
        Person peter = new Person("Peter");
        Person jack = new Person("Jack");

        // 两个变量指向同一个对象
        Person variableA = peter;
        Person variableB = peter;
        System.out.println(isSameObject(variableA, variableB)); // 输出 true

        // 两个变量指向不同对象
        variableA = peter;
        variableB = jack;
        System.out.println(isSameObject(variableA, variableB)); // 输出 false
    }
}

关键说明

  • 泛型在编译后会被类型擦除,运行时本质上都是Object类型的引用,==运算符对所有引用类型的逻辑一致:比较两个变量是否指向堆内存中的同一个对象实例。
  • 注意不要和equals()方法混淆:equals()默认也是比较引用,但很多类会重写它来比较内容;而==始终是比较内存地址,正好符合你判断“是否指向同一个对象”的需求。

内容的提问来源于stack exchange,提问作者Ascyt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:55:19