【问题标题】:Is Array.Copy safe when the source and destination are the same array?当源和目标是同一个数组时,Array.Copy 是否安全?
【发布时间】:2012-06-22 03:05:38
【问题描述】:

我目前正在使用 Array.Copy 来移动数组:

Array.Copy(array, 0, array, 1, array.Length - 1);

明显比使用循环要快。我知道其他语言中的类似函数(例如 memcpy)是未定义的,或者当编译器过于激进时有时会中断。在 .NET 中考虑这种安全是否合理?

【问题讨论】:

    标签: c#


    【解决方案1】:

    是的,它是安全的。这是documented 在这种情况下方法应该如何表现:

    如果 sourceArray 和destinationArray 重叠,则此方法的行为就像在覆盖destinationArray 之前将sourceArray 的原始值保存在临时位置。

    【讨论】:

    • 这是因为使用的基本函数是 memmove,它允许内存重叠。
    猜你喜欢
    • 2017-04-21
    • 2017-10-12
    • 2011-08-04
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多