C# - Methode return var
Ich gerne zurück var von meiner Methode.
Ich verwalte eine dynamische, aber dann ist meine try-catch-finally-funktioniert nicht.
Könnten Sie verbessern meine Methode zum zurückgeben var?
Ich brauche nicht zu verwenden, dynamisch, ich bin auf der Suche nach der besten Methode zum zurückgeben var.
Vielen Dank im Voraus.
Rune
public dynamic m_DEMO_Return_var_method(string vpSchemaName, string vpTableName)
{
var var_List = new List<string>();
//try
//{
DataTable iDataTable = new DataTable();
var_List.Clear();
foreach (DataRow iDataRow in iDataTable.Rows)
{
var_List.Add(iDataRow["COLUMN_NAME"].ToString());
}
var vColumnName = var_List.ToArray();
return vColumnName;
//}
//catch (Exception im_Exception)
//{
// return vColumnName;
//}
//finally
//{
//}
}
Sie können nicht zurückkehren, var. Wie würde es werden....?
warum müssen Sie zurück var? warum nicht ein array zurückgeben? oder Generika verwendet?
Ich glaube nicht, dass es möglich ist, return var. var eingegeben wird, wenn der code kompiliert wird. Rückkehr var verwirrend wäre.
Profitieren Sie von beschreiben, was genau Sie zu tun versuchen, mit dieser Methode. Bist du eigentlich immer Rückgabe eines
Bitte werfen Sie einen Blick auf meine Antwort: http://stackoverflow.com/a/17503153/952310
warum müssen Sie zurück var? warum nicht ein array zurückgeben? oder Generika verwendet?
Ich glaube nicht, dass es möglich ist, return var. var eingegeben wird, wenn der code kompiliert wird. Rückkehr var verwirrend wäre.
Profitieren Sie von beschreiben, was genau Sie zu tun versuchen, mit dieser Methode. Bist du eigentlich immer Rückgabe eines
string[]
nach Ihrem letzten Zeile, es ist unklar, warum können Sie nicht einfach, wie der Rückgabetyp.Bitte werfen Sie einen Blick auf meine Antwort: http://stackoverflow.com/a/17503153/952310
InformationsquelleAutor RBrattas | 2013-07-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie aktualisieren Sie Ihren code wie folgt.
Die Methode gibt null zurück, wenn vColumnName variable wird keine Daten enthalten, oder wenn eine exception auftreten.
Sie sind das meiste willkommen..
Sie nicht brauchen, um zurück
dynamic
zurück ein array von unbekannter Größe. Jedes mal, wenndynamic
erscheint, Sie setzen-Methode, Auflösung, etc., der Laufzeit, die für eine weitere verwirrende Fehler. Es wäre viel besser, wenn Ihre Methode einfach zurückstring[]
oder sogarIEnumerable<string>
oderList<string>
.InformationsquelleAutor captainsac
var
ist nicht ein Typ, sondern ein C# - Schlüsselwort für die Verkürzung und macht den code besser lesbar (eine implizit typisierte lokale variable) - Lesen hier über die es sich tiefer ein. Also vergessen Sie über die Rückkehrvar
- Einsatz ein echter Typ in der Signatur der Methode, wie:int
,string
etc.Als er sah nun, du bist der Rückkehr
string
array so ändern Sie den Rückgabetyp zustring[]
siehe:Als für die
try-catch-finally
block, wäre es nicht für Sie arbeiten, weilvColumnName
ist deklariert in dertry
Umfang (code-block) - Man kann immer erklären, es höher, in den Gültigkeitsbereich der Methode zum Beispiel.BTW, du bist nur instanciating die Datentabelle, aber nicht füllen Sie es, wo sollen die Daten herkommen?:
Bist du auch löschen der
var_List
ohne Füllung zuerst:Darüber hinaus sind Sie besser verwenden Sie einen anderen Namen für Ihre Methode nennen Sie es, wie die akzeptierten Konvention in c# ist "Pascal case" für Methoden benennen:
Aber... es sind nun Tupel in C# 7, der es Ihnen ermöglicht, statisch typisierte "Typen", die zurückgegeben werden können, von einer Methode (oder sogar ein generischer Typ-parameter). Sie bieten einige ähnlichkeiten zur Erstellung von anonymen Typen können zu lindern die Notwendigkeit
var
wie ich bereits sagte. docs.microsoft.com/en-us/dotnet/csharp/tuplesInformationsquelleAutor Yair Nevet
Den Typ des Objekts, das Sie zurückkehren ist immer
string[]
. Sie könnte ändern Sie den Rückgabetyp der Methode, ohne dass seine Funktionalität:Dies würde immer noch erlauben, Sie zu verwenden
var
beim Aufruf der Methode:Bearbeiten: Ihre
catch
Blocks nicht kompilieren, weil Sie versuchen, um eine variable, dievColumnName
, dass ist nicht deklariert in Ihrem Geltungsbereich. Sie können dieses Problem beheben, durch Rücksendungnull
oder eine leerestring[]
.InformationsquelleAutor Douglas
Var nicht verwendet werden, die als Rückgabewert der Methode weder als parameter der Methode.Da sind Sie wieder, eine Kollektion können Sie Ihren return-Typ IEnumerable:
InformationsquelleAutor terrybozzio
Einfach ändern Sie den Rückgabetyp der Methode zum Objekt und zurück können Sie alles deklariert mit dem Schlüsselwort var welcher Art auch immer es passiert zu sein.
InformationsquelleAutor lightbricko
Obwohl diese nicht direkt die Antwort auf Ihre Frage nach der "Rückkehr var" es ist Ihr problem lösen, ähnliche Antworten existieren, aber die Anwendung einer Methode, die ich Häufig verwenden, um Ihre genauen code:
InformationsquelleAutor shooky