Dot-Net

System.String.Copy 在 .NET 中有什麼用?

  • February 6, 2009

恐怕這是一個非常愚蠢的問題,但我一定遺漏了一些東西。

為什麼要使用String.Copy(string)

文件說方法

創建一個新的 String 實例,其值與指定的 String 相同。

由於字元串在 .NET 中是不可變的,所以我不確定使用這種方法有什麼好處,因為我認為

string copy = String.Copy(otherString);

出於所有實際目的,似乎會產生與

string copy = otherString;

也就是說,除了正在進行的任何內部簿記以及複製不是ReferenceEquals到 otherString 的事實之外,沒有可觀察到的差異 - String 是一個不可變類,其相等性基於值,而不是身份。(感謝@Andrew Hare 指出我最初的措辭不夠精確,無法表明我意識到Copying 和 not 之間存在差異,但擔心缺乏有用的差異。)

當然,當傳遞一個null參數時, Copy 會拋出一個ArgumentNullException,並且“新實例”可能會消耗更多記憶體。後者似乎幾乎沒有好處,而且我不確定 null 檢查是否足以保證整個 Copy 方法的好處。

謝謝。

String.Copy您實際上是在分配新記憶體並將字元從一個字元串複製到另一個字元串;你得到一個全新的實例,而不是讓兩個變數都是同一個實例。如果您將字元串與直接處理記憶體位置並可以改變字元串的非託管程式碼一起使用,這可能很重要。

引用自:https://stackoverflow.com/questions/520895