2017-10-30 2 views
0

Jetzt mit C# Code, der nun so etwas wie dieseWie Sie eine Methode aus derselben Klasse in einer anderen Methode in C# aufrufen?

public class MyClass 
{ 
    public static void Method1() 
    { 
     //Do something 
    } 

    public void Method2() 
    { 
     //Do something 
     Method1(); 
    } 
} 

sieht was passiert, wenn ich den Code ersetzen, wie ich arbeite:

public class MyClass 
{ 
    public static void Method1() 
    { 
     //Do something 
    } 

    public void Method2() 
    { 
     //Do something 
     MyClass.Method1(); 
    } 
} 

Nun, was ist der Unterschied in über 2 Darstellungen ist. Ist es das Gleiche oder zeigt es ein anderes Arbeiten? Jede Hilfe wird geschätzt.

+0

Der einzige Unterschied ist die Lesbarkeit. Im zweiten Code-Snippet wissen Sie, dass Sie 'MyClass.Method1();' als statische Methode betrachten. In der ersten muss man nachschauen. –

+0

Es kann als das Aufrufen eines offensichtlichen Klassenfelds oder einer offensichtlichen Klasseneigenschaft in der Klassenmethode mit 'this.'-Bezeichner betrachtet werden. Der einzige Unterschied, den es für Sie machen würde, ist Lesbarkeit, wenn Sie eine andere Klasse mit einer statischen Methode mit demselben Namen haben. Sie können diese beiden Methoden mit dem Klassennamen unterscheiden. – praty

+0

Danke für die Hilfe. –

Antwort

4

Die zweite ist nur eine längere Version der vorherigen. Wenn Sie sich in der gleichen Klasse wie die statische Methode befinden, müssen Sie den Klassennamen nicht angeben. Sie können dies, müssen dies aber nicht (ähnlich wie this für Instanzmethoden angeben).

+0

Danke für die Hilfe. Hatte eine Menge Verwirrung als ein Ort, an dem es als 1. Darstellung und ein Platz als 2. verwendet wurde. Daher begann ich mich zu fragen, ob ihre Arbeit anders war. –

+0

@JasmeetsinghBansal Es ist eine gute Idee, eine Version auszuwählen und dabei zu bleiben, ich bevorzuge die ausführlichere Version ('MyClass.Method1()'), da es klarer ist, wenn man nur den Code betrachtet, von dem man spricht Methode –

+0

Danke, wird dies weiter im Auge behalten. –

1

Innerhalb der Klasse gibt es keinen Unterschied, aber der Unterschied kommt, wenn Sie versuchen, sie von außerhalb der Klasse aufzurufen. Zum Beispiel benötigen Sie eine Instanz Ihrer Klasse, während für die statische Methode diese nicht benötigt wird. Aber in Ihrer Klasse können Sie einfach sagen

public class MyClass 
{ 
    public static void Method1() 
    { 
     //Do something 
    } 

    public void Method2() 
    { 
     Method1(); //you don't have to qualify it 
    } 
} 
Verwandte Themen