Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 在.NET 4.0中,要求使用代码契约对输入参数集合进行排序的最有效方法是什么?_C# 4.0_.net 4.0_Static Analysis_Code Contracts - Fatal编程技术网

C# 4.0 在.NET 4.0中,要求使用代码契约对输入参数集合进行排序的最有效方法是什么?

C# 4.0 在.NET 4.0中,要求使用代码契约对输入参数集合进行排序的最有效方法是什么?,c#-4.0,.net-4.0,static-analysis,code-contracts,C# 4.0,.net 4.0,Static Analysis,Code Contracts,如何实现输入参数强制执行?一点代码将帮助我们所有人帮助您 我假设你有这样一个方法 public void MyMethod(params string[] list) {...} 并且您希望使用代码契约来确保此方法将只使用排序列表调用。你有没有在身体上做过类似的尝试 Contract.Requires(list.OrderBy(s => s).SequenceEquals(list)); 为什么要关门?这个问题既不含糊,也不过于宽泛。对此,有合理的答案。@porges我同意。这是一个非

如何实现输入参数强制执行?

一点代码将帮助我们所有人帮助您

我假设你有这样一个方法

public void MyMethod(params string[] list) {...}
并且您希望使用代码契约来确保此方法将只使用排序列表调用。你有没有在身体上做过类似的尝试

Contract.Requires(list.OrderBy(s => s).SequenceEquals(list));

为什么要关门?这个问题既不含糊,也不过于宽泛。对此,有合理的答案。@porges我同意。这是一个非常清楚的问题。使用一种方法可能更好,除非Linq使用的排序保证项目在已经排序的情况下不会移动(即使它不是一种更普遍的稳定排序算法,它也可能会这样做)。IsSorted()方法也可能更有效。@redcalx当然,如果您愿意为项目添加另一个依赖项或编写自己的优化实现,您当然可以进行优化。不过,这个问题要求的是效率,而不是效率,所以我们应该记住唐纳德·克努斯撇开性能不谈,关于正确性的另一点是正确的;i、 e.序列可能都已排序,但不相等。@redcalx如果您担心.OrderBy(..)将修改列表,则不会发生这种情况。linq生成的每个步骤都将创建一个新的可枚举项。我完全相信这是有保证的,我不会费心去查的。也许一些边缘linq驱动程序会这样做,但它肯定会违反规范。