Различия Directcast & Ctype с перечислениями

Я сделал что-то похожее с render :json. Это - то, что работало на меня:

respond_to do |format|
    format.html # index.html.erb
    format.json  { render :json => @things.to_json(:include => { :photos => { :only => [:id, :url] } }) }
end
13
задан bdukes 9 February 2015 в 20:13
поделиться

1 ответ

Причина в том, что CType и DirectCast принципиально разные операции.

DirectCast - это механизм приведения типов в VB.Net что позволяет выполнять только преобразования, определенные CLR. Он даже более строг, чем версия C # приведения типов, поскольку не учитывает пользовательские преобразования.

CType - это механизм лексического приведения. Он учитывает правила CLR, определенные пользователем преобразования и преобразования, определенные VB.Net. Короче говоря, он будет делать все возможное, чтобы создать допустимое преобразование объекта в указанный тип.

В этом конкретном случае вы пытаетесь преобразовать значение в Enum, для которого нет преобразования, определенного в CLR, и, следовательно, это не удается. Однако среда выполнения VB.Net смогла найти лексическое преобразование для решения этой проблемы.

Приличное обсуждение различий существует здесь:

21
ответ дан 1 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: