Ist es möglich, über eine statische Methode auf eine Instanzvariable zuzugreifen?

7

Ist es in C # möglich, über eine statische Methode in verschiedenen Klassen auf eine Instanzvariable zuzugreifen, ohne Parameterübergabe zu verwenden?

In unserem Projekt habe ich eine Klasse Data access layer , die viele statische Methoden hat. In diesen Methoden wurde der Wert für SqlCommand timeout fest codiert. In einer anderen Klasse ( Dac ) in unserem Framework gibt es viele Instanzmethoden, die diese statischen Methoden aufrufen.

Ich möchte nicht zu viel mit Parameterübergabe programmieren. Haben Sie eine andere Lösung, die einfacher ist als die Parameterübergabe?

    
mkus 30.07.2010, 13:24
quelle

5 Antworten

11

Ja, es ist möglich, von einer statischen Methode auf eine Instanzvariable zuzugreifen, ohne einen Parameter zu verwenden, aber nur, wenn Sie über eine Instanz, die als statisch deklariert ist, darauf zugreifen können. Beispiel:

%Vor%     
Mark Byers 30.07.2010, 13:25
quelle
6

Eine statische Methode hat keine Instanz, mit der sie arbeiten könnte, also nein. Ohne Parameterübergabe ist das nicht möglich.

Eine andere Option für Sie könnte die Verwendung einer statischen Instanz der Klasse sein (Marks Beispiel zeigt diese Methode bei der Arbeit), obwohl ich aus Ihrem Beispiel nicht sicher bin, dass das Ihr Problem lösen würde.

Ich persönlich denke, Parameterübergabe wird die beste Option sein. Ich bin mir immer noch nicht sicher, warum du dich davor zurückhalten willst.

    
Justin Niessner 30.07.2010 13:25
quelle
5

Sicher, Sie könnten eine Instanz als Parameter an die Methode übergeben. Wie:

%Vor%

Aber es wäre nicht möglich, sonst irgendwelche Instanzvariablen zu bekommen.

    
Jake Pearson 30.07.2010 13:25
quelle
2

Ja, solange es eine Instanz eines Objekts im Geltungsbereich hat. Singletons zum Beispiel oder Objekte, die innerhalb der Methode selbst erstellt wurden.

Nehmen Sie zum Beispiel ein häufiges Szenario:

%Vor%     
Richard Friend 30.07.2010 13:45
quelle
1

Nein, kannst du nicht.

Wenn Sie auf eine Instanzvariable zugreifen möchten, sollte Ihre Methode per Definition nicht statisch sein.

    
Brian R. Bondy 30.07.2010 13:30
quelle

Tags und Links