Reutiliți aceeași variabilă pentru apelurile TryParse () multiple

Am citit ceva despre asta și din întrebările similare la mine, se pare că ceea ce am de gând să întreb nu ar putea fi (ușor) posibil ... Dar oricum am vrut să verific. Poate că toate aceste întrebări erau de la o versiune mai veche a C #/.NET, iar lucrul a fost pus în aplicare recent.

Oricum. Am o instrucțiune switch-case într-una din clasele mele, al cărei scop este în esență să ia un int ( typeID ) și un șir ( value ) și să verificați dacă < valoarea poate fi analizată ca tip de date indicat de typeID . De exemplu, aici fac parte din ceea ce am acum:

    case 1:
        char charret;
        return char.TryParse(value, out charret);
    case 2:
        Regex re = new Regex(Constants.REGEX_ALPHANUMERIC);
        return re.IsMatch(value);
    case 3:
        bool boolret;
        return bool.TryParse(value, out boolret);
    //And so on...

What I would like to do is to be able to avoid the char/bool instantiation you see in cases 1 & 3. Ideally, I would like to just have the return statement. It's not a big deal (obviously), but it would be nice if I could make this more (even more) compact.

0
@Anon, as vrea, daca ar putea fi toate la un singur tip. Ceea ce nu poate.
adăugat autor Argent, sursa
@SLaks, ar trebui. Eu voi. Decizie bună.
adăugat autor Argent, sursa
Ar trebui să stocați instanța Regex în loc să o re-parsați de fiecare dată.
adăugat autor SLaks, sursa
Nu puteți declara doar variabila înainte de comutator?
adăugat autor Botonomous, sursa

3 răspunsuri

Această postare ar putea fi utilă, deoarece face un TryParse generic (dacă este disponibil):

http://toadcode.blogspot.com/2010/10/generic-object -tryparse.html

0
adăugat
Este cu siguranță interesantă. Dacă ar fi făcut o parsare mai serioasă, probabil că ar trebui să mă gândesc la ceva de genul ăsta, dar în acest caz, sunt doar 8 cazuri în acest bloc de blocare - și asta este.
adăugat autor Argent, sursa

Acest lucru este inerent imposibil.

Variabilele trecute ca parametri out trebuie să se potrivească exact cu tipul de parametru.

0
adăugat
Ce păcat. Speram că, din moment ce C# are suport pentru funcții anonime, aș putea aplica și aici principii similare. Nu este un biggie, totuși, mulțumesc!
adăugat autor Argent, sursa

Nu există nicio modalitate de a evita declararea unei variabile atunci când apelați o funcție cu un parametru out.

0
adăugat