Tag: set

联合两个自定义类会返回重复项

我有两个自定义类, ChangeRequest和ChangeRequests ,其中ChangeRequests可以包含许多ChangeRequest实例。 public class ChangeRequests : IXmlSerializable, ICloneable, IEnumerable, IEquatable { … } public class ChangeRequest : ICloneable, IXmlSerializable, IEquatable { … } 我试图做两个ChangeRequests实例的联合。 但是,似乎没有删除重复项。 我的MSTestunit testing如下: var cr1 = new ChangeRequest { CRID = “12” }; var crs1 = new ChangeRequests { cr1 }; var crs2 = new ChangeRequests { cr1.Clone(), new ChangeRequest […]

使用HashSet 创建整数集

我想创建一个使用HashSet表示整数集的类。 我希望它使用该内部容器跟踪集合中包含的值。 到目前为止我做到了这一点: class SetInteger { HashSet intTest= new HashSet(); intTest.Add(1); intTest.Add(2); intTest.Add(3); intTest.Add(4); intTest.Add(5); intTest.Add(6); intTest.Add(7); intTest.Add(8); intTest.Add(9); intTest.Add(10); } 所以,在这里我想我正在为HashSet添加一些值,但是我没有看到它如何跟踪集合中包含的值。 有任何想法吗?

.NET检查两个IEnumerable 是否具有相同的元素

可能重复: 比较两个集合是否相等 我需要validation两个IEnumerable列表是否具有相同的元素,不一定是相同的顺序。 我的目标是.NET 3.5。 这是测试。 问题是, HasSameElements()应该如何实现? var l1 = new[]{1,2,3}; var l2 = new[]{3,1,2}; bool rez1 = l1.HasSameElements(l2);//should be true var l3 = new[]{1,2,3,2}; var l4 = new[]{3,1,2,2}; bool rez2 = l3.HasSameElements(l4);//should be true var l5 = new[]{1,2,3,2}; var l6 = new[]{1,2,3}; bool rez3 = l5.HasSameElements(l6);//should be false 附加说明: 在示例中,我使用IEnumerable,但T可以是任何东西。 T必须实现IComparable吗? Enumerable.SequenceEquals()本身不起作用,它期望元素的顺序相同。 这是HasElements的模板: […]

速记访问者和变异者

我正在学习C#,并且正在学习将字段设为私有类,并使用Getters和Setters来公开方法而不是字段值。 get; set; get; set; 在方法1和方法2等效? 例如,一个是另一个的速记吗? class Student { // Instance fields private string name; private int mark; // Method 1 public string Name { get; set; } // Method 2 public int Mark { get { return mark; } set { mark = value; } } } 最后,如果您想在获取或设置值之前执行计算,是否会使用方法2 ? 例如,将值转换为百分比或执行validation? 例如 class Student […]

如何为给定字符串键入集合

可能重复: 如何获得子集的所有可能组合? 我正在尝试为给定字符串键入集合,例如“123”会给{1} {2} {3} {13} {23} {12} {123} {}但我的代码会给我1 1请任何人告诉我为什么,请帮助我修复它谢谢大家 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestAAD { class Program { static List sets = new List(); static int len = 0; private static void Generte_Sets(string str, int i) { sets.Add(str[i].ToString()); if (i < len) Generte_Sets(str, i + 1); else { […]

get set for simple variables的好处是什么

可能重复: 公共字段与自动属性 我想这会在某个地方得到解答,但我不会在通常的地方找到它。 我在想,这样做有什么好处 private int _foo; public int foo {get {return _foo;} set{_foo = value;}} 要么 public int foo {get; set;} 只是 public int foo; 如果需要更复杂的操作,我可以看到好处,但这样的简单案例的好处是什么?

与get之间的区别; 组; 没有得到; 组;

我不明白静态属性之间的区别: public static int intId; 并得到 特性: public int intId { get { return intId; } set { intId = value; } } 这两者有什么区别? 他们的工作方式相同或不同?

测试两个IEnumerable 是否具有相同频率的相同值

我有两个多字节,都是IEnumerables,我想比较它们。 string[] names1 = { “tom”, “dick”, “harry” }; string[] names2 = { “tom”, “dick”, “harry”, “harry”}; string[] names3 = { “tom”, “dick”, “harry”, “sally” }; string[] names4 = { “dick”, “harry”, “tom” }; 希望names1 == names4返回true(并且self == self显然返回true) 但所有其他组合都返回错误。 什么是最有效的方式? 这些可以是大型复杂对象。 我看着做: var a = name1.orderby(v => v.Name); var b = name4.orderby(v => v.Name); […]

为什么有HashSet但没有在C#中设置?

老问题 我的理解是C#在某种意义上具有HashSet和set类型。 我理解HashSet是什么。 但为什么set是一个单独的词? 为什么不是每个集合都是HashSet ? 新问题 为什么C#没有genericsSet类型,类似于Dictionary类型? 从我的角度来看,我希望有一个具有标准查找/添加/删除性能的集合。 我不关心它是用哈希还是别的来实现的。 那么为什么不在这个版本的C#中创建一个实际上被实现为HashSet的集合类,但在将来的版本中可能会有所不同? 或者为什么不至少接口ISet ? 回答 感谢所有回答如下的人: ICollection实现了很多你对ISet期望。 但是,从我的观点来看, ICollection实现了IEnumerable而集合不必是可枚举的—例如:1到2之间的实数集合(甚至更多,集合可以动态生成)。 我同意这是一个小咆哮,因为“普通程序员”很少需要不可数集。 好吧,我想我明白了。 HashSet绝对意味着被称为Set但在某种意义上保留了Set这个词。 更具体地说,.NET体系结构的创建者希望为不同的语言提供一致的集合(sic!)。 这意味着标准类的每个名称都不得与.NET语言中的任何关键字一致。 然而,在VB.NET中使用了这个词,它实际上是不区分大小写的(是吗?),所以不幸的是那里没有空间。 谜团已揭开 :) 结语 Alex Y的新答案链接到MSDN页面 ,该页面描述了即将推出的.NET 4.0接口ISet ,它的行为与我认为应该HashedSet并由HashedSet实现。 好结局。

类,结构或接口成员声明中的标记’=’无效c#

对于人们来说,这可能是一个简单的问题,但我不明白为什么会这样。 这是我的代码第1条: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GameCore { public class PlayerCharacter { public void Hit(int damage) { Health -= damage; if (Health <= 0) { IsDead = true; } } public int Health { get; private set; } = 100; public bool IsDead{ get; private set; } } […]