Глубокая копия andurrentdictionary в C#C#

Место общения программистов C#
Ответить
Anonymous
 Глубокая копия andurrentdictionary в C#

Сообщение Anonymous »

Я пытаюсь сделать глубокую копию concurrentdictionary в C#, но не удастся. Как я могу сделать это, чтобы cdtwo становится глубокой копией Cdone , чтобы я мог изменить DataObj в cdtwo , не затрагивая его в cdone ?
main.cs:
using System.Collections.Concurrent;
namespace ExampleCode;
internal class Program
{
private static void Main(string[] args)
{
// Create the data object with the message to the world
DataObj objOne = new();

// Create the concurrent dictionaries
ConcurrentDictionary cdOne = new();
ConcurrentDictionary cdTwo = new();

// Create obj one
objOne.MessageToTheWorld = "Hello, World";
cdOne.TryAdd(0, objOne);

// Clone cdOne without changing the DataObj in cdOne when changing cdTwo (not working)
cdTwo = cdOne;
cdTwo[0].MessageToTheWorld = "Hello, Europe";

// Print the message to the user
Console.WriteLine(cdOne[0].MessageToTheWorld);
Console.WriteLine(cdTwo[0].MessageToTheWorld);
Console.ReadKey();
}
}
< /code>
файл класса DataObj.cs: < /p>
namespace ExampleCode;
internal class DataObj
{
public string MessageToTheWorld { get; set; }

public DataObj() { }

public object Clone()
{
DataObj obj = (DataObj)this.MemberwiseClone();
return obj;
}

}
< /code>
Редактировать. Я попробовал эти один глубокий клонирующий объекты, но это дало мне это:


Подробнее здесь: https://stackoverflow.com/questions/794 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»