gpt4 book ai didi

.NET 4.0 内部实现排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:44:32 25 4
gpt4 key购买 nike

我发现在 Array.Sort 中,

[ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail), SecurityCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool TrySZSort(Array keys, Array items, int left, int right);

被调用。知道这是如何实现的吗?

最佳答案

您可以从 SSCLI20 source distribution 获得一份相当可靠的 CLR 源代码副本。 .它于 2005 年发布,当时是 CLR 版本 2 的相当准确的副本。从未发现明显的差异。

从那时起,这已经是 7 年前的事了,此后 CLR 版本进行了一次相当重要的更新。但是 TrySZSort() 仍然存在,那些低级实现是高度 self 保护的。您会发现它在 clr/src/vm/ecall.cpp 中声明并映射到 ArrayHelper::TrySZSort(),这是一个在 clr/src/vm/arrayhelpers.cpp 中声明的 C++ 方法

否则非常无聊,它只是调用一个名为ArrayHelpers<T>.QuickSort()的模板类方法。 , 按值类型元素的数组元素类型专门化。

这正是 Tony Hoare 在 52 年前写下它的方式。尽管不是在 C++ 中;)

您会在 this answer 中找到此代码用 C++ 而不是 C# 编写的原因.

关于.NET 4.0 内部实现排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11944324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com