Полный список операторов преобразования .NET - PullRequest
3 голосов
/ 12 июля 2010

У кого-нибудь есть полный список операторов преобразования для VB / C # и чем они отличаются?

Пока я знаю о ...

  • значение как тип [C #]
  • TryCast (значение, тип) [VB]
  • Convert.ToXxx (значение) [любое]
  • (тип) значение [C #]
  • CType (значение, тип) [VB]
  • DirectCast (значение, тип) [VB]
  • CXxx (значение) [VB]
  • CTypeDynamic [любой]
  • неявные преобразования при использовании Option Strict Off [VB]
  • неявные преобразования при использовании динамического [C #]
  • значение типа [F #]
  • :> [F #]
  • :?> [F #]

Но, конечно, просто иметь список - это не то же самое, что знать тонкие различия между ними.

1 Ответ

4 голосов
/ 12 июля 2010

Сравнение F # и C # для приведений / преобразований см.

Как этот код C # выглядит в F #?(часть первая: выражения и заявления)

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

(Обратите внимание, что вы перечислили

type value

для F #, я полагаю, вы говорите, например,

int 'a'

, но обратите внимание, что int здесь это имя функции в библиотеке F #, а неимя типа . См. документы здесь ; в общем случае для каждого примитивного числового типа T существует функция с именем T, которая преобразует свой аргумент в место назначениятип с таким же именем.)

Относительно неявных преобразований в F #:

  • Там string -> PrintfFormat (как часть магии для typesafe printf)
  • Есть upcasts при вызовах методов и присваиваниях свойств / массивов, что позволяет вам делать, например, f(dog) или person.Pet <- dog при *Ожидается 1042 *Это также работает для известных номинальных типов литералов коллекции, например, let controls : Control list = [button; form; window]
  • В аргументах вызова метода преобразование функции в делегат , которые включают, например, new Thread(fun() -> ()), где функция F #преобразуется в делегат ThreadStart.
  • Существует ref в byref преобразование в аргументах вызова метода, что позволяет передавать ref, например, outпараметр.

Я думаю, что так оно и есть - в F # очень мало неявных преобразований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...