Entwickler-Ecke

C# - Die Sprache - Frage zu Event deklaration


Christoph1972 - Mo 22.09.08 16:56
Titel: Frage zu Event deklaration
Hallo zusammen,


man kann die delegate void innerhalb einer Klasse deklarieren, oder im Namespace. Beides funktioniert. Wo ist jedoch der Unterschied?



ich meine so:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
namespace EventTest
{
    public delegate void MyDelegate(String Message);

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
                
        public event MyDelegate MyEvent;


oder so:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
namespace EventTest
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public delegate void MyDelegate(String Message);        
        public event MyDelegate MyEvent;



Sorry für soeine Frage, aber ich komme eigentlich von VB.Net.......


Gruß
Christoph


Kha - Mo 22.09.08 17:42

Ganz allgemein sind Nested Types (die gibt's auch in VB) nur in wenigen Szenarien nützlich, und public sollten sie nimmernie sein. Ergo: Raus damit.

Speziell zu deinem Delegate: Der einzige Unterschied besteht darin, wie der Delegate von außen angesprochen wird, was du wahrscheinlich nie tun müssen wirst: MyDelegate vs Form2.MyDelegate.


Christoph1972 - Mo 22.09.08 17:53

Ah ja Ok, dann werde ich die delegate void immer in der Klasse deklarieren. Danke!

Ganz allgemein sind Nested Types (die gibt's auch in VB) nur in wenigen Szenarien nützlich, und public sollten sie nimmernie sein. Ergo: Raus damit. Was du mir damit sagen möchtest verstehe ich leider nicht! :gruebel:



Gruß
Christoph


Kha - Mo 22.09.08 18:03

Mit "Raus damit" meinte ich eigentlich: _nicht_ in der Klasse :lol: .
Die genauen Guidelines findest du hier: http://msdn.microsoft.com/en-us/library/ms229027.aspx


Christoph1972 - Mo 22.09.08 20:37

Ja gut, da habe ich wohl wieder mal was falsch verstanden :lol: Ok, also war mein erstes Beispiel richtig, ja? So habe ich das gerade auch noch mal nachgelsen.




Gruß
Christoph