übergeben - void c#




In C#, was ist<T> nach einer Methodendeklaration? (3)

Das T ist ein Typparameter und kann in diesem Fall alles sein (eine Einschränkung kann angegeben werden, aber hier gibt es keine Einschränkung). Ohne diese Funktion müssten Sie die Methode für jeden Typ deklarieren, den Sie verwenden möchten:

static void Foo(params int[] x)    
static void Foo(params string[] x)    
static void Foo(params Customer[] x)    
etc...

Weitere Informationen zu Generika finden Sie in MSDN: Einführung in Generics (C #) .

Ich bin ein VB.Net-Typ. (Weil ich es sein muss, weil die Person, die meinen Scheck unterschreibt, das sagt.: P) Ich bin in Java aufgewachsen und ich kämpfe im Allgemeinen nicht, wenn ich die Chance habe, in C # zu lesen oder zu schreiben. Ich bin heute auf eine Syntax gestoßen, die ich noch nie gesehen habe und die ich scheinbar nicht herausfinden kann.

In der folgenden Methodendeklaration, was bedeutet <T>?

statische Leere Foo <T> (Parameter T [] x)

Ich habe gesehen, in Verbindung mit generischen Sammlungen und Dinge zu erklären, aber ich kann nicht für das Leben von mir herauszufinden, was es für diese Methode tut.

Falls es darauf ankommt, bin ich darauf gestoßen, als ich über einige Denksportaufgaben nachgedacht habe. Der sechste Teaser enthält das gesamte Code-Snippet.


Dies definiert eine generische Methode , die eine Form von generics , die zu C # in C # 2.0 hinzugefügt wurden.

Die Methode sig sollte sein:

static void Foo<T>(params T[] x)
{ // ...

Auf diese Weise können Sie eine beliebige Anzahl von Argumenten eines beliebigen (spezifischen) Typs in die Methode Foo übergeben und auf dieses Array von Argumenten einwirken. Es ist ähnlich wie generische Typen funktionieren, außer nur für die Methode. Das <T> gibt den Typ des Arguments an, das an die Methode übergeben wird. Sie können dies wie folgt aufrufen:

Foo<MyClass>(myClassInstance, myClassInstance2, mySubclassInstance);

Was Sie fragen, ist das Konzept der Generika in c #. Durch die Verwendung von Generika können Sie diese Methode für die gewünschten Typen verwenden

Angenommen, Sie müssen eine Funktion erstellen, um zwei Zahlen hinzuzufügen. In diesem Fall ist Ihre Funktion

//For integer :
public int sum(int a, int b)
{ 
  return a + b;
}



//For floating point numbers :
public float sum( float a, float b)
{
  return a + b;
}

Wenn Sie nach dieser Logik eine Funktion erstellen möchten, die zwei doppelte Zahlen addiert, würden Sie eine weitere Funktion erstellen und so weiter.

Hinweis: Code oben funktioniert nicht mit C #, aber es für die Erklärung Konzept einfach, es nur Sudo-Code wird es mit C # arbeiten, wenn Sie Nullable Typ oder Referenztyp leicht haben oder man muss Logik schreiben, um Wert in Primärtyp zu konvertieren.

Bu mit Hilfe von Generika können Sie alle diese Funktionen ersetzen und schreiben Sie Folgendes,

public T sum<T>(T a, T b)
{
  return a + b;
}

Dies funktioniert für alle numerischen Typen sowie für Strings.

Überprüfen Sie dies für weitere Details: http://www.codeproject.com/kb/books/EssentialCS20.aspx





declaration