C# - Initialiser une variable sans savoir ce que sa va être

J'ai deux tables dans ma base de données, et sont affichés à l'utilisateur en fonction de leurs "SortOrder". J'ai écrit deux fonctions prennent une ligne (ou une entité) et des swaps de son ordre de tri le plus proche (en haut ou en bas, selon la fonction est exécutée). J'ai besoin de faire ces fonctions de travail pour les deux tables différentes, selon l'endroit où l'événement se produit (plusieurs gridviews avec des fonctionnalités identiques). Voici ce que j'ai à ce jour (encore une fois, il est à peu près la même fonction pour déplacer bas, mais je ne le poste que parce qu'il serait redondant):

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 de lancer le currentValue variable avant les instructions if, sinon il y a la "possibilité" de ne jamais être déclaré, et par conséquent le reste de la fonction (qui utilise le currentValue variable), ne fonctionne pas.

Ma question est: Comment dois-je initialiser la variable avant les instructions if, si je ne suis pas sûr de ce que sa va être encore? J'ai pensé que cela pourrait fonctionner, mais il dit que j'ai encore besoin de l'initialiser ("implicitement de typage des variables locales 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);
    }

[MODIFIER] Modifié le titre afin de refléter avec plus de précision à ma question

Je n'ai pas le modèle de données. Je suis juste en ajoutant des fonctionnalités à un projet qui est déjà pour la plupart construits. Je suis encore très nouveau .net, alors je travaille avec une connaissance limitée de l'
Vous avez un problème avec le Type de currentValue, pas avec la valeur. Juste restructurer votre code.

OriginalL'auteur Jordan Foreman | 2011-06-28