【问题标题】:What is comparison operator for references?什么是引用的比较运算符?
【发布时间】:2016-08-04 22:32:55
【问题描述】:

我可以像这样在 c++ 中创建一组指针:

std::set<Data*> data_set;

有没有类似的写法:

SortedSet<Data> data_set;

编辑:我想在 c# 中使用类似的订单逻辑。数据是 Object 的简单派生类。

【问题讨论】:

  • 你能详细说明你想要做什么吗?如果您希望 C# 中的排序集与 SortedSet 提供的排序不同,请在类中实现 IComparer 接口并覆盖 Compare 方法。
  • 如果您想在这些对象没有逻辑顺序时拥有一组唯一的对象实例,那么您应该使用HashSet,而不是SortedSet
  • 是的,我只想要一组独特的对象实例
  • 那么你需要在你的问题中说出来,而不是要求一些明显不同的东西。

标签: c# .net


【解决方案1】:

尝试使用HashSet。集合是不包含重复元素的集合

HashSet<Data> data_set = new HashSet<Data>();
data_set.Add(new Data());

【讨论】:

  • 我认为他对比较 C# 中的引用感到困惑,他并没有试图找到他应该使用什么类型的集合。
【解决方案2】:

在大多数情况下,C# 并不像 C++ 那样明确说明指针和引用。但是,如果您创建一个对象集合,它总是隐含地是 对象的引用的集合(请注意,在这种情况下我说的是“对象”;值类型的处理方式不同)。 (在大多数情况下,C# 使用引用而不是指针本身 - 请参阅here 了解对此的例外情况)。然后,您可以使用“==”运算符进行引用相等。

您提供的 C# 代码实际上与您提供的 C++ 代码具有相似的效果(当然,您不必明确指出指针/引用)。

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 2012-10-19
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2013-03-24
    • 2016-03-22
    • 2021-07-20
    相关资源
    最近更新 更多