J'ai deux tables différentes dans ma base de données, et chacune est affichée à l'utilisateur en fonction de leur "SortOrder". J'ai écrit deux fonctions qui prennent une ligne (ou une entité) et inversent son ordre de tri avec celui qui est le plus proche (haut ou bas, selon la fonction en cours d'exécution). J'ai besoin de faire fonctionner ces fonctions pour deux tables différentes, en fonction de l'endroit où l'événement se produit (gridviews multiples avec des fonctionnalités identiques). Voici ce que j'ai jusqu'à présent (encore une fois, il y a une fonction presque identique pour le déplacement vers le bas , mais je ne publierez pas parce que ce serait redondant):C# - Initialise une variable sans savoir ce que cela va être
protected void moveUp(String ValId, String dbName)
{
int ValueId = Convert.ToInt32(ValId);
DataModel.DataAccess.Entities dc = new DataModel.DataAccess.Entities();
if (dbName.ToLower() == "table1")
{
DataModel.DataAccess.Table1 currentValue = dc.Table1.Single(table1item => table1item.Table1ItemId == ValueId);
}
else if (dbName.ToLower() == "table2")
{
DataModel.DataAccess.Table2 currentValue = dc.Table2.Single(table2item => table2item.Table2ItemId == ValueId);
}
try
{
//make the change and update the database and gridview
}
catch (InvalidOperationException)
{
}
}
Le problème évident est que j'ai besoin pour initier le currentValue variable avant les instructions if, sinon il y a la "possibilité" de ne jamais être déclaré, et donc le reste de la fonction (qui utilise la variable currentValue), ne fonctionnera pas.
Ma question est la suivante: comment dois-je initialiser la variable avant les instructions si, si je ne suis pas sûr de ce que ça va être encore? Je pensais que cela pourrait fonctionner, mais il me dit que je dois encore l'initialiser (« variables locales implicitement typées doivent être initialisées »):
var currentValue; //this is the line where I get the error message above
if (dbName.ToLower() == "table1")
{
currentValue = (DataModel.DataAccess.Table1)dc.Table1.Single(table1item => table1item.Table1ItemId == ValueId);
}
else if (dbName.ToLower() == "table2")
{
currentValue = (DataModel.DataAccess.Table2)dc.Table2.Single(table2item => table2item.Table2ItemId == ValueId);
}
[EDIT] a changé le titre pour qu'il reflète plus précisément ma question
Je n'ai pas créé le modèle de données. J'ajoute simplement des fonctionnalités à un projet qui est déjà principalement construit. Je suis encore très nouveau pour .net, donc je travaille avec des connaissances limitées –
Vous avez un problème avec le _Type_ de currentValue, pas avec la valeur. Juste restructurer votre code. –