2012-06-04 1 views
1

Я читал об этом, и из вопросов схожую с моим, похоже, то, что я собираюсь спросить, не может быть (легко) возможным ... Но я все равно хотел проверить. Возможно, все эти вопросы были из более старой версии C# /. NET, и это было недавно реализовано.Повторное использование одной и той же переменной для нескольких вызовов TryParse()

В любом случае. У меня есть оператор switch-case в одном из моих классов, целью которого является, по существу, взять int (typeID) и строку (value) и проверить, можно ли анализировать value как тип данных, обозначенный typeID. Например, вот часть того, что я сейчас:

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... 

То, что я хотел бы сделать это, чтобы быть в состоянии избежать char/bool экземпляра на которую вы видите в случаях 1 & 3. В идеале, я хотел бы просто получим оператор return. Это не очень важно (очевидно), но было бы неплохо, если бы я смог сделать это более (даже более) компактным.

+1

Разве вы не можешь просто объявить переменный перед переключением? – Botonomous

+1

Вы должны хранить экземпляр 'Regex' вместо повторного разбора его каждый раз. – SLaks

+0

@ Анон, я бы, если бы все это сводилось к одному типу. Который он не может. – Argent

ответ

2

Это по своей сути невозможно.

Переменные, прошедшие как параметры out, должны точно соответствовать типу параметров.

+0

Это позор. Я надеялся, что, поскольку C# поддерживает анонимные функции, я мог бы применять аналогичные принципы и здесь. Но не biggie, спасибо! – Argent

2

Невозможно избежать объявления переменной при вызове функции с параметром out.

1

Это сообщение может быть полезно, поскольку это делает общую TryParse (если он доступен):

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

+0

Это определенно интересно. Если бы вы делали более серьезный синтаксический анализ, я бы, наверное, посмотрел на что-то подобное, но в этом случае на самом деле это всего лишь 8 случаев в этом блоке с коммутационным корпусом - и все. – Argent

 Смежные вопросы

  • Нет связанных вопросов^_^