Autor Beitrag
FelixD
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 22.01.11 19:14 
Ich habe folgende selbsterstellte Datentypen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
  class Poly
{
  ModInt[] coef;
  int deg; //degree of zero polynomial = -1
  int p;
}


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public struct ModInt
  {
    public int n;
    public int p;
}


Nun will ich zu einem gegebenen Poly-Objekt a ein weiters Poly-Objekt b mit den selben Koeffizienten erstellen, allerdings so, dass nicht beide eine Reference auf ein und das selbe ModInt - Array haben. Ich möchte also ein Objekt ändern können, ohne dadurch das andere zu verändern. Nun würde ich dies im Falle eines in-Arrays so machen:

ausblenden C#-Quelltext
1:
int[] coef = (int[])a.coef.Clone();					


Allerdings ist bei diesem Vorgehen eine explizite Konvertierung auf den Datentyp der im Array enthaltenen Daten notwendig. Bei int steht so etwas zu Verfügung. Nun frage ich mich ob ich für einen selbsterstellten Datentyp so etwas auch möglich ist. Sprich kann man so eine Konvertierung implentieren? Wenn ja wie funktioniert das? Wenn nein wie kann ich das Problem sonst lösen?

Mir wäre wirklich weitergeholfen, falls mir hier jemand sagen könnte wie ich das mache.

lg
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 22.01.11 19:23 
Ich würde zunächst einen Konstruktor für Poly schreiben, der ein ModInt-Array und zwei int-Werte erwartet. Im Konstruktor klonst du dann zunächst das Array, bevor du es dem entsprechenden Feld zuweist. Zur einfacheren Verwendung kannst du noch eine Methode Clone erstellen, die diesen Konstruktor mit den Werten der eigenen Felder als Parameter aufruft und das neu erstellte Objekte zurückgibt.
FelixD Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 22.01.11 20:08 
Das ist eine sehr gute Idee, danke! Allerdings bleibt mein eigentliches Problem bestehen: Wie klone Ich ein Array aus eigenen Datentypen ?
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 22.01.11 21:45 
Ach das ist dein Problem.

user profile iconFelixD hat folgendes geschrieben Zum zitierten Posting springen:
Bei int steht so etwas zu Verfügung.

Du meinst bei int[]. Und wenn du mit der Maus über das Clone fährst oder es markierst und F12 drückst, siehst du, dass diese Methode in der Klasse Array deklariert ist. Sie gilt also für Arrays aller Art. Ist damit deine Frage beantwortet? ;)

Für diesen Beitrag haben gedankt: FelixD
FelixD Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 23.01.11 11:13 
Ja danke =)