Посмотрев на код, из которого я вытащил фрагмент более подробно, я вижу, по крайней мере, одну большую разницу между этими двумя подходами.
reader.GetString(1)
сгенерирует исключение, если мы не сможем привести данные во втором столбце (с индексом 1) к string
. reader[4] as string
использует ключевое слово as
, и поэтому, если данные в пятом столбце (индекс 4) не могут быть приведены к строке, мы просто возвращаем null
, исключение составляет , а не выброшены.