Entwickler-Ecke

C# - Die Sprache - Deklaration von Funktion, Variable Global bzw. in Namespace


Baumunk - Fr 24.11.06 09:30
Titel: Deklaration von Funktion, Variable Global bzw. in Namespace
Hallo,

Wie beklariert man in c# eine globale Funktion, Variable bzw. in dem Namespace?

Voraus danke


Delete - Fr 24.11.06 10:17

globale Variablen gibts in C# nicht mehr (zum Glück)


JüTho - Fr 24.11.06 12:23

user profile iconMagicAndre1981 hat folgendes geschrieben:
globale Variablen gibts in C# nicht mehr (zum Glück)

Nun ja, darüber kann man jahrelang diskutieren, ob das gut oder schlecht ist.

Von Vorteil ist auf jeden Fall, dass unter NET (also auch C#) alles - ALLES! - Klassen sind. Je nachdem, was Du erreichen willst, kommen Singleton-Klassen oder statische Variablen "normaler" Klassen oder Formulare in Frage.

Gruß Jürgen

PS. Ich muss immer wieder auffordern, manche Vorgehensweisen nicht ideologisch, sondern pragmatisch zu betrachten.


Baumunk - Fr 24.11.06 12:47

Hallo Jürgen,

Folgendes, Ich schreibe eine namespace wo mehrere Control classen deklariert sind (system.windows.Forms.Control)
Jeder von diesem class verwendet/benotigt gleiche Funktionen (erstellen von neuer farbe, zeichnen von gerundeten recheck usw.).

Ich möchte lediglich nur, dass diese funktionen entwieder global für diese namespace gelten, oder eine neue Class dafür wo diese Funktionen da sind und dass dieses Class als quasi eigenschaft in allen anderen classen abzurufen ist.

Da ein beispiel aus Delphi :


Delphi-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:
Unit xy;

Type
  TMyHelpClass = Class (Object)
  Public
    .........
    Function XY1 : Integer;
    Function XY2 : String;
    ........
  End;

  TMyControl = Class (TWinControl)
  End;

  Function MyHelpClass : TMyHelpClass;

Implementation

Var FMyHelpClass : TMyHelpClass;

Function MyHelpClass : TMyHelpClass;
Begin
  If FMyHelpClass = nil Then FMyHelpClass := TMyHelpClass.Create;
  Result := FMyHelpClass ;
End;

Procedure TMyControl.Paint;
Begin
  .....
  S := MyHelpClass.XY2;
  ..... 
End;


Wo ich neu in c# bin, möchte ich analog beispiel dafür in c# sehen. So wie ich jetzt es verstehen muss ich diese Funktionen in jedem Class schreiben oder ein class mit diesen Functionen schriben und der in jedem anderem class erstellen.

Voraus danke.


Kha - Fr 24.11.06 14:19

Das ist das klassische Singleton-Pattern, Umsetzungen für C# findest du beispielsweise in der Wikipedia.
Allerdings scheint es mir in deinem Fall besser zu sein, zumindest einen Teil der Funktionen nicht in ein Singleton sondern in eine gemeinsame Basisklasse zu stecken.