| Autor |
Beitrag |
Xzeer
      
Beiträge: 62
|
Verfasst: So 12.09.10 10:59
Hi,
Es geht um diese Klasse:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81:
| public class Ereignis { private Guid ereignisId; private Guid geräteId; private Guid aktionId; private Guid kundenId; private DateTime datum; private string vermerk;
public Ereignis(Guid inEreignisId) { ereignisId = inEreignisId; }
public Ereignis() { ereignisId = Guid.NewGuid(); }
public Ereignis(Guid inEreignisId, Guid inGeräteId, DateTime inDatum) { ereignisId = inEreignisId; geräteId = inGeräteId; datum = inDatum; }
public Ereignis(Guid inGeräteId, DateTime inDatum) { ereignisId = Guid.NewGuid(); geräteId = inGeräteId; datum = inDatum; }
public Ereignis(Guid inEreignisId, Guid inGeräteId, Guid inAktionId, Guid inKundenId, DateTime inDatum, string inVermerk) { ereignisId = inEreignisId; geräteId = inGeräteId; aktionId = inAktionId; kundenId = inKundenId; datum = inDatum; vermerk = inVermerk; }
public Ereignis(Guid inGeräteId, Guid inAktionId, Guid inKundenId, DateTime inDatum, string inVermerk) { ereignisId = Guid.NewGuid(); geräteId = inGeräteId; aktionId = inAktionId; kundenId = inKundenId; datum = inDatum; vermerk = inVermerk; }
public Ereignis(Guid inEreignisId, Guid inGeräteId, Guid inAktionId, DateTime inDatum, string inVermerk) { ereignisId = inEreignisId; geräteId = inGeräteId; aktionId = inAktionId; datum = inDatum; vermerk = inVermerk; }
public Ereignis(Guid inGeräteId, Guid inAktionId, DateTime inDatum, string inVermerk) { ereignisId = Guid.NewGuid(); geräteId = inGeräteId; aktionId = inAktionId; datum = inDatum; vermerk = inVermerk; } } |
Das ist der Fehler (Makiert ist Zeile 64):
Quelltext 1:
| Der Typ "XADIS2010.Ereignis" definiert bereits einen Member namens "Ereignis" mit den gleichen Parametertypen. |
Verstehe ich nicht, ich kann keinen doppelten Member finden!? Was mache ich denn da falsch?
_________________ Xzeer
|
|
Flitzs
      
Beiträge: 123
Erhaltene Danke: 7
Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
|
Verfasst: So 12.09.10 11:28
Hallo!
Um eine Methode von einer anderen zu unterscheiden, wird ihre Signatur verwendet. Sie besteht aus dem Namen der Funktion und der Anzahl und Reihenfolge der Parameterdatentypen. Die Namen der einzelnen Parameter beeinflussen die Signatur nicht.
Daher hat
C#-Quelltext 1:
| public Ereignis(Guid inGeräteId, Guid inAktionId, Guid inKundenId, DateTime inDatum, string inVermerk) |
die selbe Signatur wie
C#-Quelltext 1:
| public Ereignis(Guid inEreignisId, Guid inGeräteId, Guid inAktionId, DateTime inDatum, string inVermerk) |
mfg Flitzs
|
|
Xzeer 
      
Beiträge: 62
|
Verfasst: So 12.09.10 12:29
okay, das klingt logisch...
muss ich jetzt also nur die datentypen-reihenfolge vertauschen, oder macht meine idee hinter den konstruktoren sowieso keinen sinn?
_________________ Xzeer
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 12.09.10 12:53
Da in C# keine optionalen Parameter möglich sind, bleiben nicht so viele Möglichkeiten. Die Parameter auszutauschen ist allerdings nicht besonders übersichtlich. Denn wenn der selbe Parameter mal z.B. als erster und mal als letzter kommt...
Eine andere Möglichkeit ist die, die Microsoft in der Windows API oft gegangen ist. Nämlich einen struct als Parameter mit den verschiedenen Daten und ggf. einem Flag, in dem angegeben wird, welche Daten gültig sind.
Ich denke das ist übersichtlicher als so viele Konstruktoren zu erstellen, die so ähnliche Signaturen haben.
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: So 12.09.10 13:34
jaenicke hat folgendes geschrieben : | | Da in C# keine optionalen Parameter möglich sind, [...] | msdn.microsoft.com/e...ibrary/dd264739.aspx
_________________ >λ=
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: So 12.09.10 13:44
Hallo,
seit es die Möglichkeit der vereinfachten Objekt Initialisierung gibt überlade ich die Konstruktoren nicht mehr.
openbook.galileocomp...8fab5e39ddd0335e8219
Flexibler & fauler  geht es nicht
Gruß
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 12.09.10 15:03
Ah, gut zu wissen, da bin ich bei C# nicht so auf dem Laufenden.
An parametrisierte Initialisierungen hatte ich nicht gedacht, das dürfte hier wohl die beste Lösung sein.
|
|
|