Tag: 比较

如何确定两个对象的类型是否兼容?

我有一个通用的function,我想知道如何写。 List something; public int countItems(List Items) { // Here I would like to compare the type of “Items” with the type of “something” to see if they are compatible. How do I do it? return 0; }

c#比较两个对象模型中的数据

我有一个对话框,当它产生时,它会被对象模型中的数据填充。 此时,数据被复制并存储在“备份”对象模型中。 当用户完成更改并单击“确定”关闭对话框时,我需要一种快速方法来比较备份对象模型和实时模型 – 如果有任何更改,我可以为用户创建一个新的撤消状态。 如果可能的话,我不想为对象模型中的每个类编写比较函数。 如果我序列化了两个对象模型并且它们相同但存储在不同的内存位置它们是否相等? 是否存在比较两个序列化对象模型的简单方法?

字符串.NET和T-SQL之间的比较差异?

在我编写的测试用例中,字符串比较似乎在SQL Server / .NET CLR之间的工作方式不同。 这个C#代码: string lesser = “SR2-A1-10-90”; string greater = “SR2-A1-100-10”; Debug.WriteLine(string.Compare(“A”,”B”)); Debug.WriteLine(string.Compare(lesser, greater)); 将输出: -1 1 这个SQL Server代码: declare @lesser varchar(20); declare @greater varchar(20); set @lesser = ‘SR2-A1-10-90’; set @greater = ‘SR2-A1-100-10’; IF @lesser < @greater SELECT 'Less Than'; ELSE SELECT 'Greater than'; 将输出: Less Than 为什么不同?

为什么在与null比较时转换为对象?

在浏览有关Equals覆盖的MSDN文档时,有一点引起了我的注意。 在此特定页面的示例中,进行了一些空检查,并在进行比较时将对象转换为System.Object类型: public override bool Equals(System.Object obj) { // If parameter is null return false. if (obj == null) { return false; } // If parameter cannot be cast to Point return false. TwoDPoint p = obj as TwoDPoint; if ((System.Object)p == null) { return false; } // Return true if the fields match: return […]

将struct与null进行比较时,编译器警告错误

请考虑以下代码: DateTime t = DateTime.Today; bool isGreater = t > null; 使用Visual Studio 2010(C#4,.NET 4.0),我收到以下警告: 警告CS0458:表达式的结果始终为’bool’类型的’null’ 这是不正确的; 结果始终为false (类型为bool ): 现在,struct DateTime重载了> (大于)运算符。 任何不可为空的结构(如DateTime)都可以隐式转换为相应的Nullable类型。 上面的表达式完全相同 bool isGreater = (DateTime?)t > (DateTime?)null; 这也产生了同样的错误警告。 这里>运算符是提升运算符。 如果其两个操作数中的任何一个的HasValue为false,则返回false 。 否则,提升的运算符将继续将两个操作数展开到底层结构,然后调用该结构定义的>的重载(但在这种情况下,如果一个操作数不是HasValue则不需要)。 你能重现这个bug吗?这个bug是众所周知的吗? 我误解了什么吗? 这对于所有结构类型(不是像int这样的简单类型,而不是枚举类型)都是相同的,它会使运算符重载。 (现在如果我们使用==而不是> ,一切都应该完全相似(因为DateTime也会重载==运算符)。但它不相似。如果我说 DateTime t = DateTime.Today; bool isEqual = t == null; 我没有得到警告☹有时你会看到人们不小心检查变量或参数为null,没有意识到他们的变量类型是一个结构(它重载==而不是像int这样的简单类型)。 如果他们得到警告会更好。) 更新:使用Visual Studio […]

将字符串与C#2.0中的字符串数组进行比较的最快方法

在C#2.0中将字符串与字符串数组进行比较的最快方法是什么

无法将T value1与T value2 = default(T)进行比较。 为什么以及如何在C#上做到这一点?

我正在尝试以下方法: T value1 = el.value; // it’s of type T already T value2 = default(T); if (value1 != value2) // gives the following error: Operator ‘!=’ cannot be applied to operands of type ‘T’ and ‘T’ { // … } 那么,我怎么能比较这两个值呢? 为什么会出现这种错误? 提前致谢!

使用C#通过下钻来扫描硬盘?

我正在尝试创建一个扫描驱动器的应用程序。 但棘手的是,我的驱动器包含一组文件夹,这些文件夹在文件夹中包含文件夹并包含文档。 我正在尝试扫描驱动器,获取所有文档和文件夹的“快照”并转储到.txt文件中。 我第一次运行这个应用程序时,输出将是一个包含所有文件夹和文件的文本文件。 我第二次运行这个应用程序,它将需要2个文本文件(从第二次运行应用程序生成的文件和第一次运行应用程序时的.txt文件)并比较它们…报告内容已被移动/覆盖/删除。 有没有人有这方面的代码? 我是这个C#的新手,任何帮助都会非常感激。 提前致谢。

比较可空的日期时间对象

我有两个可以为空的日期时间对象,我想比较两者。 最好的方法是什么? 我已经尝试过了: DateTime.Compare(birthDate, hireDate); 这是一个错误,也许是期望System.DateTime类型的日期,我有Nullable日期时间。 我也尝试过: birthDate > hiredate… 但结果不如预期……任何建议?

如何最有效地测试两个数组是否包含C#中的等效项

我有两个数组,我想知道它们是否包含相同的项目。 Equals(object obj)不起作用,因为数组是引用类型。 我在下面发布了我的尝试,但是因为我确定这是一项常见的任务,我想知道是否有更好的测试。 public bool ContainsEquivalentSequence(T[] array1, T[] array2) { bool a1IsNullOrEmpty = ReferenceEquals(array1, null) || array1.Length == 0; bool a2IsNullOrEmpty = ReferenceEquals(array2, null) || array2.Length == 0; if (a1IsNullOrEmpty) return a2IsNullOrEmpty; if (a2IsNullOrEmpty || array1.Length != array2.Length) return false; for (int i = 0; i < array1.Length; i++) if (!Equals(array1[i], array2[i])) return false; […]