Autor Beitrag
Xzeer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 62



BeitragVerfasst: So 12.09.10 10:59 
Hi,

Es geht um diese Klasse:

ausblenden volle Höhe C#-Quelltext
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;

        ////////////////////////////////////////////////////////
        /////////////// --> KONSTRUKTOR <-- ////////////////////
        ////////////////////////////////////////////////////////

        ///////////////// - Leer - ////////////////////////

        public Ereignis(Guid inEreignisId)
        {
            ereignisId = inEreignisId;
        }

        public Ereignis()
        {
            ereignisId = Guid.NewGuid();
        }

        ///////////////// - Pflichtfelder - ////////////////////////

        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;
        }

        ///////////////// - Vollständig - ////////////////////////

        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):

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: 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

ausblenden C#-Quelltext
1:
public Ereignis(Guid inGeräteId, Guid inAktionId, Guid inKundenId, DateTime inDatum, string inVermerk)					


die selbe Signatur wie

ausblenden C#-Quelltext
1:
public Ereignis(Guid inEreignisId, Guid inGeräteId, Guid inAktionId, DateTime inDatum, string inVermerk)					


mfg Flitzs
Xzeer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 62



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 12.09.10 13:34 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Da in C# keine optionalen Parameter möglich sind, [...]
msdn.microsoft.com/e...ibrary/dd264739.aspx

_________________
>λ=
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 12.09.10 15:03 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Da in C# keine optionalen Parameter möglich sind, [...]
msdn.microsoft.com/e...ibrary/dd264739.aspx
Ah, gut zu wissen, da bin ich bei C# nicht so auf dem Laufenden. :mrgreen:

An parametrisierte Initialisierungen hatte ich nicht gedacht, das dürfte hier wohl die beste Lösung sein.