14
A
回答
17
分配空間爲目標磁盤陣列,使用Array.CopyTo():
targetArray = new string[sourceArray.Length];
sourceArray.CopyTo(targetArray, 0);
27
- 要創建具有相同內容的全新陣列(如淺表副本):呼叫
Array.Clone
和只投結果。 - 爲字符串陣列的一部分複製到另一個字符串數組:呼叫
Array.Copy
或Array.CopyTo
例如:
using System;
class Test
{
static void Main(string[] args)
{
// Clone the whole array
string[] args2 = (string[]) args.Clone();
// Copy the five elements with indexes 2-6
// from args into args3, stating from
// index 2 of args3.
string[] args3 = new string[5];
Array.Copy(args, 2, args3, 0, 5);
// Copy whole of args into args4, starting from
// index 2 (of args4)
string[] args4 = new string[args.Length+2];
args.CopyTo(args4, 2);
}
}
假設我們開始了與args = { "a", "b", "c", "d", "e", "f", "g", "h" }
的結果是:
args2 = { "a", "b", "c", "d", "e", "f", "g", "h" }
args3 = { "c", "d", "e", "f", "g" }
args4 = { null, null, "a", "b", "c", "d", "e", "f", "g", "h" }
+0
嗨,Jon,爲什麼字符串數組克隆'深'克隆?我的意思是我知道Array.Clone()是一個淺拷貝;雖然它在其他引用類型(例如CultureInfo)上做了一個淺拷貝,但它以某種方式在字符串數組上進行了「深層」拷貝。例如,如果我克隆一個包含「Hello」,「World」的數組;在克隆之後,我將第一個元素設置爲null。然後我期望克隆數組的第一個元素也應該是null,但它仍然是Hello。希望你知道我的意思而不能在評論中顯示代碼示例。 – stt106 2015-01-27 10:57:31
0
上面的答案顯示了一個淺層克隆;所以我想我使用序列化添加了一個深層克隆示例;當然也可以通過循環原始數組並將每個元素複製到一個全新的數組中來完成深度克隆。
private static T[] ArrayDeepCopy<T>(T[] source)
{
using (var ms = new MemoryStream())
{
var bf = new BinaryFormatter{Context = new StreamingContext(StreamingContextStates.Clone)};
bf.Serialize(ms, source);
ms.Position = 0;
return (T[]) bf.Deserialize(ms);
}
}
測試深克隆:
private static void ArrayDeepCloneTest()
{
//a testing array
CultureInfo[] secTestArray = { new CultureInfo("en-US", false), new CultureInfo("fr-FR") };
//deep clone
var secCloneArray = ArrayDeepCopy(secTestArray);
//print out the cloned array
Array.ForEach(secCloneArray, x => Console.WriteLine(x.DateTimeFormat.DateSeparator));
//modify the original array
secTestArray[0].DateTimeFormat.DateSeparator = "-";
Console.WriteLine();
//show the (deep) cloned array unchanged whereas a shallow clone would reflect the change...
Array.ForEach(secCloneArray, x => Console.WriteLine(x.DateTimeFormat.DateSeparator));
}
相關問題
- 1. 如何將字符串數組複製到另一個字符串數組中?
- 2. 從一個字符串指針數組複製字符串到另一個
- 3. 將字符串複製到一個字符串數組
- 4. 將一個字符串複製到一個malloc'd數組字符串
- 5. 將字符串數組複製到一個整數數組?
- 6. 將一個字符串複製到另一個
- 7. C初學者 - 複製一個字符*數組到另一個字符*數組
- 8. 如何將一個字符數組複製到一個字符串C++
- 9. 將字符串數組複製到一個新的字符串數組中
- 10. 複製字符串數組另一個數組對象
- 11. 從字符串複製一個字母到另一個
- 12. 將字符數組內容複製到另一個陣列[MIPS]
- 13. 將char轉換爲char無效* - 將字符串數組中的char複製到另一個字符串數組
- 14. 如何將字符串的一部分複製到另一個字符串中?
- 15. 將字符串的一部分複製到另一個C#中的字符串
- 16. 將一個字符串從一個指針複製到另一個指針
- 17. 將一個字符串從一個地方複製到另一個地方
- 18. 將某個字符串從一個字符串複製到另一個字符串中
- 19. 的strcpy()從一個結構複製到另一個字符串
- 20. 如何從一個字符串複製到Java中的另一個字符串?
- 21. 數組複製到另一個數組
- 22. 如何將一個數組中的數字複製到另一個數組
- 23. 將一個字符串到另一個字符串中的Java
- 24. 如何使用C#將字符串數組複製到另一個字符串數組?
- 25. C++:如何將一個字符串對象複製到一個int數組?
- 26. 將前幾個字符複製到一個新字符串
- 27. 只需要數組字符串的一部分複製到另一個陣列
- 28. 從字符串字符複製到另一個在Visual C++
- 29. 複製一個字符串轉換成一個結構數組
- 30. 將對象從一個json數組複製到另一個
使用clone()對這種特殊情況下一個班輪雖然。 – 2009-05-20 07:23:02