Méthode C# pour revenir var
Je voudrais retourner var de ma méthode.
J'ai réussi à utiliser la dynamique, mais ensuite mes try-catch-finally ne fonctionne pas.
Pourriez-vous améliorer ma méthode pour retourner var?
Je n'ai pas besoin d'utiliser dynamique, je suis à la recherche de la meilleure méthode pour retourner var.
Je vous remercie beaucoup à l'avance.
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
//{
//}
}
- vous ne pouvez pas retourner var. Ce type serait-il....?
- pourquoi vous avez besoin de retourner var? pourquoi ne pas retourner un tableau? ou utiliser des génériques?
- Je ne pense pas que c'est possible de retourner var. var est tapé lorsque le code est compilé. De retour var serait source de confusion.
- Vous pouvez bénéficier de décrire exactement ce que vous essayez de faire avec cette méthode. Vous êtes réellement revenant toujours un
string[]
selon votre dernière ligne, on ne sait pas pourquoi vous ne pouvez pas l'utiliser comme type de retour. - Veuillez prendre un coup d'oeil à ma réponse: http://stackoverflow.com/a/17503153/952310
- quel que soit le type, le compilateur aurait assignée à la variable
y
sireturn x;
ont été remplacés par desvar y = x;
et en utilisant les mêmes règles quenew [] { a, b, c, }
de calcul automatique du tableau du type quand il y a plusieursreturn
énoncés dans la fonction. Bien sûr, il ne serait pas utile dans toutes les situations, mais il y a quelques temps où il serait agréable... - le but du code est d'être clair. Qui ne serait pas de faciliter la lecture et la compréhension du code de l'OMI.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez mettre à jour votre code comme suit.
La méthode renvoie null si vColumnName variable ne contient aucune donnée ou si une exception se produire.
dynamic
pour retourner un tableau de taille inconnue. Chaque foisdynamic
pop-up, vous mettez de la méthode de résolution, etc., de runtime qui permet d'accroître la confusion des échecs. Il serait beaucoup mieux d'avoir votre méthode, juste retourstring[]
ou mêmeIEnumerable<string>
ouList<string>
.var
n'est pas un type, mais un mot clé C# pour raccourcir et rendre le code plus lisible (une tapée implicitement variable locale) - lire ici à ce sujet plus en profondeur. Donc, oubliez le retour duvar
- Utiliser un type réel dans votre signature de la méthode, comme:int
,string
etc.Comme il est regardé maintenant, vous êtes de retour
string
tableau, modifier le type de retour destring[]
, regardez:Comme pour le
try-catch-finally
bloc, il ne serait pas travailler pour vous parce quevColumnName
est déclarée dans letry
portée (bloc de code) - Vous pouvez toujours déclarer de plus en plus haut, dans la portée de la méthode par exemple.BTW, vous êtes juste instanciating la DataTable, mais pas de la remplir d'abord, où les données proviennent de?:
Vous êtes également de compensation de la
var_List
sans le remplir d'abord:En outre, vous êtes mieux d'utiliser un autre nom pour votre nom de la méthode, comme la convention acceptée en c#, Pascal cas pour les méthodes de nommage:
var
comme je l'ai dit plus tôt. docs.microsoft.com/en-us/dotnet/csharp/tuplesLe type de l'objet que vous êtes de retour est toujours
string[]
. Vous pouvez changer le type de retour de votre méthode sans affecter ses fonctionnalités:Ce serait encore de vous permettre d'utiliser
var
lors de l'appel de la méthode:Modifier: Votre
catch
bloc n'est pas la compilation parce que vous êtes en train d'essayer de revenir à une variable,vColumnName
, qui n'est pas déclaré dans son champ d'application. Vous pouvez résoudre ce problème en retournantnull
ou un videstring[]
.Var ne peut pas être utilisé comme valeur de retour de méthode ni comme paramètre de méthode.Puisque vous êtes de retour d'une collection, vous pouvez faire votre déclaration de type IEnumerable:
Il suffit de modifier le type de retour de la méthode à l'objet, et vous pouvez retourner tout ce déclarées avec le mot-clé var quel que soit le type, il arrive à être.
Bien que cela n'est pas directement la réponse à votre question de "retour var" il ne de résoudre votre problème, les réponses semblables existent au-dessus, mais l'application d'une méthode que j'utilise souvent pour votre code exact: