В ролях против разбора - PullRequest
       19

В ролях против разбора

9 голосов
/ 20 сентября 2010

Я прочитал несколько связанных вопросов по этой теме, но ни один из них не имеет смысла для меня. Насколько я понимаю, в некоторых случаях вы можете использовать приведение и анализ взаимозаменяемо и достичь того же результата.

Существуют ли общие рекомендации, которые могут помочь мне решить, когда выбрать один подход вместо другого?

Ответы [ 3 ]

9 голосов
/ 20 сентября 2010

Обычно вы используете Parse () для строки, значение которой представляет собой допустимое значение типа, в который вы конвертируете.

Приведение, с другой стороны, лучше использовать, когда у вас есть объект производного типа, но сохраненный в базовой переменной, и вам нужно использовать его как более конкретный тип.

То есть, если у вас есть "1234", вы можете Parse () в int. Но если у вас есть

object variable = 1234;

Вы должны разыграть его, чтобы получить обратно как int.

4 голосов
/ 20 сентября 2010

Приведение - это скорее преобразование объекта из аналогичного типа. Хорошим примером является число с плавающей точкой до целого числа или двойное число до десятичного. Разбор это просто так; разбор. Определение или использование разбора немного шире. Вы можете написать метод Parse в своем собственном объекте, аналогичном int.Parse или int.TryParse, чтобы преобразовать строку в тип вашего объекта. Синтаксический анализ может также относиться к таким вещам, как манипуляции со строками для сбора необходимых данных из любой заданной строки. «Парсинг» не обязательно относится к «Кастингу».

Еще один хороший пример приведения - использование наследования или интерфейсов.

public interface ICar {
    // ...
}

public class Corvette : ICar {
    // ...
}

public void Foo() {
    Corvette mycar = new Corvette();
    // Now do a cast
    ICar = (ICar)mycar;
}
3 голосов
/ 21 сентября 2010

Посмотрите здесь , на исчерпывающий ответ Марка Гравелла (ответит вам и о конвертации тоже ..).

...