C#使用两个包含相同数据的集合

C#使用两个包含相同数据的集合,c#,.net,collections,C#,.net,Collections,我对C#还相当陌生。在C++中,如果我想要两个包含一些或所有相同数据的集合,那就很容易了。例如,您只需在堆上创建对象,并在每个集合中使用(自动)指针集合。C#似乎没有指针的概念,那么如何在C#中做同样的事情呢 一个集合(可能是一个数组)将包含所有对象。另一个(可能是队列)将包含数组中内容的子集。最终,对象将从队列中删除,但仍保留在数组中 这是一个很简单的问题,但我仍然在关注C++和C的区别。 < P>也许你需要先了解引用和值类型。p> 可能您需要先了解引用和值类型 C在不安全的上下文中有指针

我对C#还相当陌生。在C++中,如果我想要两个包含一些或所有相同数据的集合,那就很容易了。例如,您只需在堆上创建对象,并在每个集合中使用(自动)指针集合。C#似乎没有指针的概念,那么如何在C#中做同样的事情呢

一个集合(可能是一个数组)将包含所有对象。另一个(可能是队列)将包含数组中内容的子集。最终,对象将从队列中删除,但仍保留在数组中


这是一个很简单的问题,但我仍然在关注C++和C的区别。

< P>也许你需要先了解引用和值类型。p>
可能您需要先了解引用和值类型

C在不安全的上下文中有指针,正如你在C++中使用的一样。但是,大多数复杂对象在C#中首先是通过引用传递的,这意味着(简化)添加到两个集合中的单个对象将是同一个对象。字符串和整数等将是值类型,例如字符串将是不可变的

更多关于C#中类型的信息:

关于不变性的长篇博文:


C#有一个垃圾收集器,负责为您管理内存和引用,任何孤立的引用通常会在合理的时间内被清除

<> P>内存管理:

C在不安全的上下文中有指针,正如你在C++中使用的一样。但是,大多数复杂对象在C#中首先是通过引用传递的,这意味着(简化)添加到两个集合中的单个对象将是同一个对象。字符串和整数等将是值类型,例如字符串将是不可变的

更多关于C#中类型的信息:

关于不变性的长篇博文:


C#有一个垃圾收集器,负责为您管理内存和引用,任何孤立的引用通常会在合理的时间内被清除

有关内存管理的更多信息:

在C#中,数据默认为(不复制,除非它是(ValueType)),因此,如果在一个位置用另一个对象指定变量,则它是一个创建的引用

例如:

class C {}
var a = new C();
var b = a;
//a and b points to the same object
无论如何,您可以在上下文中使用C#中的指针(尽管不推荐)。

在C#中,数据默认为(不复制,除非它是(ValueType)),因此,如果您在一个位置用另一个对象指定变量,则它是创建的引用

例如:

class C {}
var a = new C();
var b = a;
//a and b points to the same object
无论如何,您可以在上下文中使用C#中的指针(尽管不推荐)。

几乎所有C#中的对象都构建在堆上,并通过指针访问。在C++中,<<代码> ./>代码几乎与<> > > > /代码>使用。我觉得它更自然

当考虑“指针”时,集合不包含数据,它引用数据

因此,在您的示例中,它将按照您所描述的方式工作

C#中几乎所有的对象都是在堆上构造的,并通过指针访问。在C++中,<<代码> ./>代码几乎与<> > > > /代码>使用。我觉得它更自然

当考虑“指针”时,集合不包含数据,它引用数据


因此,在您的示例中,它将按照您所描述的方式工作

@harryovers仅在不安全模式下。。。。但通常你不需要使用它们。引用在C#(在本文中)中用作指针@Abdul Muqtadir是的,你是对的,我只是注意到“C#似乎没有指针的概念…”是一个正确的说法。谢谢。这就是我的心态需要改变的地方。我习惯于C++中的东西默认值传递。理解C#通过引用传递有助于我了解如何实现我想要的。对于C#如何管理对象的生命周期,我仍然有点困惑。我假设引擎盖下有某种自动参考计数。否则,当我将对象从队列中移除时,它如何知道不删除该对象,但如果我也将其从数组中移除,它如何知道删除该对象。这就是C#的自动垃圾收集的作用吗?@harryovers只在不安全模式下。。。。但通常你不需要使用它们。引用在C#(在本文中)中用作指针@Abdul Muqtadir是的,你是对的,我只是注意到“C#似乎没有指针的概念…”是一个正确的说法。谢谢。这就是我的心态需要改变的地方。我习惯于C++中的东西默认值传递。理解C#通过引用传递有助于我了解如何实现我想要的。对于C#如何管理对象的生命周期,我仍然有点困惑。我假设引擎盖下有某种自动参考计数。否则,当我将对象从队列中移除时,它如何知道不删除该对象,但如果我也将其从数组中移除,它如何知道删除该对象。这就是C#的自动垃圾收集的用武之地吗?我明白。这对C#来说并不新鲜。然而,在C++中,在我的经验中最好避免使用集合中的引用。在某些情况下,当使用引用时,事情变得混乱,集合基本上无法使用。C语言中的引用与C++中的引用有什么不同吗?C++中对象引用的列表将是可怕的。C#会自动进行某种引用计数吗?C#有一个垃圾收集器,负责内存和引用管理,任何孤立的引用通常会在合理的时间内被清除。更新了我的答案以包含此小贴士。=)我明白。这对C#来说并不新鲜。然而,在C++中,在我的经验中最好避免使用集合中的引用。在某些情况下,当使用引用时,事情变得混乱,集合基本上无法使用。C语言中的引用与C++中的引用有什么不同吗?C++中对象引用的列表将是可怕的。