Является ли lib.dll 32-разрядной DLL? Ваша программа на C # будет запускаться на x64 изначально, но не сможет загрузить 32-разрядные библиотеки DLL. Вы можете попробовать изменить целевой процессор проекта C # на «x86», чтобы заставить его работать под WOW64.
Те все немного отличаются, и обычно имеют приемлемое использование.
var.
ToString
()
собирается дать Вам строковое представление объекта, независимо от того, каково тип это. Используйте это, если var
уже не строка. CStr
(var)
строковый оператор броска VB. Я не парень VB, таким образом, я предложил бы избежать его, но это действительно не собирается повреждать что-либо. Я думаю, что это - в основном то же как CType
. CType
(var, String)
преобразует данный тип в строку, использование любого обеспечило операторы преобразования. DirectCast
(var, String)
привык к восходящему объект в строку. Если Вы знаете, что переменная объекта является, на самом деле, строкой, используйте это. Это совпадает с (string)var
в C#. TryCast
(как упомянуто NotMyself) похож DirectCast
, но он возвратится Nothing
, если переменная не может быть преобразована в строку, вместо того, чтобы выдать исключение. Это совпадает с var as string
в C#. TryCast
страница на MSDN имеет хорошее сравнение, также. Я предпочитаю следующий синтаксис:
Dim number As Integer = 1
Dim str As String = String.TryCast(number)
If str IsNot Nothing Then
Ха можно сказать, что я обычно пишу код в C#. 8)
причина я предпочитаю, чтобы TryCast был Вами, не должны смешивать с издержками кастинга исключений. Ваш бросок или успешно выполняется или Ваша переменная, инициализируется к пустому указателю, и Вы имеете дело с этим соответственно.
MSDN, кажется, указывает, что броски Cxxx для определенных типов могут улучшить производительность в.NET VB, потому что они преобразовываются во встроенный код. По некоторым причинам это также предлагает DirectCast в противоположность CType в определенных случаях (состояния документации, которые это - когда существуют отношения наследования; я полагаю, что это означает, что исправность броска проверяется во время компиляции, и оптимизация может быть применена, тогда как CType всегда использует время выполнения VB.)
то, Когда я пишу код.NET VB, что я использую, зависит от того, что я делаю. Если это - код прототипа, я собираюсь выбросить, я использую то, что я, оказывается, ввожу. Если это - код, я серьезно отношусь к, я пытаюсь использовать бросок Cxxx. Если Вы не существуете, я использую DirectCast, если у меня есть разумная вера, что существуют отношения наследования. Если это - ситуация, где я понятия не имею, должен ли бросок успешно выполниться (ввод данных пользователем-> целые числа, например), то я использую TryCast, чтобы сделать что-то более дружественное, чем бросок исключение в пользователе.
Одна вещь, которую я не могу встряхнуть, я склонен использовать ToString вместо CStr, но предположительно Cstr быстрее.
Когда-то, я не забываю видеть состояние библиотеки MSDN для использования CStr (), потому что это было быстрее. Я не знаю, верно ли это все же.
Пользователь Konrad Rudolph защитники для DirectCast () в вопросе о Переполнении стека "Скрытые Функции VB.NET" .
Cstr()
компилируется встроенный для лучшей производительности.
CType
допускает броски между типами, если оператор преобразования определяется
ToString()
Между базовым типом, и строка выдает исключение, если преобразование не возможно.
TryParse()
От Строки для базирования typeif
возможный иначе возвращает false
DirectCast
используемый, если типы будут связаны через наследование или совместно используют единый интерфейс, то выдаст исключение, если бросок не будет возможен, [то 116] ничего не возвратит в этом экземпляре