The Artima Developer Community
Sponsored Link

.NET Buzz Forum
Kopier-Konstruktor in C#

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
-

Posts: 1524
Nickname: nitronic
Registered: Jul, 2006

Norbert Eder works as a software architect.
Kopier-Konstruktor in C# Posted: Apr 4, 2007 1:53 AM
Reply to this message Reply

This post originated from an RSS feed registered with .NET Buzz by -.
Original Post: Kopier-Konstruktor in C#
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
Latest .NET Buzz Posts
Latest .NET Buzz Posts by -
Latest Posts From Norbert Eder - Living .NET

Advertisement
Unter vielen Sprachen ist ein Kopier-Konstruktor standardm����ig f��r ein Objekt vorhanden. Bei C# ist dem nicht so. Nachfolgend m��chte ich kurz zeigen, wie ein Kopier-Konstruktor in C# realisiert wird. Im Anschluss gibt es einen Hinweis von mir, warum ich pers��nlich Kopier-Konstruktoren nicht verwenden w��rde.

public class Car
{
    private int _maxSpeed = 200;
    private Color _color = Color.White;
    private Driver _driver = null;

    public int MaxSpeed
    {
        get { return this._maxSpeed; }
        set { this._maxSpeed = value; }
    }

    public Color Color 
    {
        get { return this._color; }
        set { this._color = value; }
    }

    public Driver Driver
    {
        get { return this._driver; }
        set { this._driver = value; }
    }

    public Car() { }

    public Car(Car car)
    {
        this._color = car.Color;
        this._maxSpeed = car.MaxSpeed;
        Driver d = new Driver();
        d.Firstname = car.Driver.Firstname;
        d.Lastname = car.Driver.Lastname;

        this._driver = d;
    }
}

Es gibt eine ��berladung des Konstruktors, welche ein Objekt vom Typ Car entgegennimmt. Hierzu wird ein Deep Copy durchgef��hrt und die Daten entsprechend kopiert.

Dies klingt ja prinzipiell recht einfach und auch ganz gut. Was daran passt also nicht? Nun, man gehe von der Verwendung in einem Framework, welches anderen Entwicklern zur Verf��gung gestellt wird aus, oder davon, dass sich der eigentliche Entwickler einige Wochen sp��ter nochmals an dieses Projekt setzt. Hier sieht er beispielsweise folgenden Code:

Car c = new Car();
Driver d = new Driver();
d.Firstname = "Norbert";
d.Lastname = "Eder";
c.MaxSpeed = 250;
c.Color = Color.Blue;
c.Driver = d;

Car c2 = new Car(c);

Auf den ersten Blick ist nicht ersichtlich, dass die Daten aus dem Objekt in das neu zu erstellende Objekt kopiert werden. Hierzu ist ein Blick in die Klasse notwendig. Ein Schritt, der nicht sein muss. Stattdessen empfiehlt es sich, das Interface ICloneable zu verwenden, oder mit MemberwiseClone zu arbeiten. Je nachdem welche Kopiermethode verwendet werden soll.

Read: Kopier-Konstruktor in C#

Topic: [Site] GoFans mit ASP.NET Ajax Previous Topic   Next Topic Topic: [Web] Neuer Beruf Web 2.0 Mediengestalter

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use