Что делает метод MemberwiseClone()?C#

Место общения программистов C#
Ответить
Anonymous
 Что делает метод MemberwiseClone()?

Сообщение Anonymous »

Меня смущает этот код:
Developer devCopy = (Developer)dev.Clone();

Если метод Clone класса Developer просто создает клон сотрудника, то как разработчик может получить клон типа Developer?
public abstract class Employee
{
public abstract Employee Clone();

public string Name { get; set; }
public string Role { get; set; }
}

public class Typist : Employee
{
public int WordsPerMinute { get; set; }

public override Employee Clone()
{
return (Employee)MemberwiseClone();
}

public override string ToString()
{
return string.Format("{0} - {1} - {2}wpm", Name, Role, WordsPerMinute);
}
}

public class Developer : Employee
{
public string PreferredLanguage { get; set; }

public override Employee Clone()
{
return (Employee)MemberwiseClone();
}

public override string ToString()
{
return string.Format("{0} - {1} - {2}", Name, Role, PreferredLanguage);
}
}

Developer dev = new Developer();
dev.Name = "Bob";
dev.Role = "Team Leader";
dev.PreferredLanguage = "C#";

Developer devCopy = (Developer)dev.Clone();
devCopy.Name = "Sue";

Console.WriteLine(dev);
Console.WriteLine(devCopy);

/* OUTPUT

Bob - Team Leader - C#
Sue - Team Leader - C#

*/

Typist typist = new Typist();
typist.Name = "Kay";
typist.Role = "Typist";
typist.WordsPerMinute = 120;

Typist typistCopy = (Typist)typist.Clone();
typistCopy.Name = "Tim";
typistCopy.WordsPerMinute = 115;

Console.WriteLine(typist);
Console.WriteLine(typistCopy);

/* OUTPUT

Kay - Typist - 120wpm
Tim - Typist - 115wpm

*/


Подробнее здесь: https://stackoverflow.com/questions/228 ... lone-doing
Ответить

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

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

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

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

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