Ответ @William Brendel предоставил три разных варианта использования красивым способом.
Использовать случай 1:
В документации по документации java на этот предоставляет те же варианты использования.
Внутри метода экземпляра или конструктора это ссылка на текущий объект - объект, чей метод или конструктор вызывается. Вы можете обратиться к любому члену текущего объекта из метода экземпляра или конструктора, используя это.
blockquote>Он охватывает два примера:
Используя это с полем и Используя это с конструктором
Используйте случай 2:
Другой вариант использования, который имеет не цитируется в этом сообщении:
this
может использоваться для синхронизации текущего объекта в многопоточном приложении для защиты критического раздела данных & amp; методы.synchronized(this){ // Do some thing. }
Использовать случай 3:
Реализация шаблона Builder зависит от использования
this
для возврата измененный объект.См. этот пост
Сохранение строителя в отдельном классе (свободный интерфейс)
Параметр Infer должен быть на , чтобы это работало правильно. Если это так, то при отсутствии типа в VB.NET (Visual Basic 9) переменная будет неявно введена.
Это не то же самое, что "Option Strict Off" в предыдущих версиях VB.NET, поскольку переменная является строго типизированной; это делается неявно (как ключевое слово C # var
).
Dim foo = "foo"
foo
объявлен как String
.
Просто используйте обычное ключевое слово Dim
без типа.
Минимальный рабочий пример:
Option Strict On ' Always a good idea
Option Infer On ' Required for type inference
Imports System
Module MainModule
Sub Main()
Dim i = 42
Dim s = "Hello"
Console.WriteLine("{0}, {1}", i.GetType(), s.GetType())
' Prints System.Int32, System.String '
End Sub
End Module
Вам понадобится Option Infer On
, а затем просто используйте ключевое слово Dim
, таким образом:
Dim query = From x In y Where x.z = w Select x
В отличие от В некоторых других ответах вам не требуется Option Strict On
.
Если вы используете VS IDE, вы можете просто навести указатель мыши на имена переменных, но чтобы получить типы переменных времени компиляции ( GetType (variableName)
не компилируется - «Type» <имя переменной > 'не определено. "- и VarType (variable)
на самом деле является просто версией VB переменной. GetType ()
, которая возвращает тип экземпляра, хранящегося в переменной во время выполнения ) Я использовал:
Function MyVarType(Of T)(ByRef Var As T) As Type
Return GetType(T)
End Function
Подробно:
без Dim
:
Явное отключение
, дает Объект
Явное включение
, ошибка «Имя» не объявлен. "
с Dim
:
Infer On
, дает ожидаемые типы Infer Off
:
Strict On
, ошибка» Опция Strict On требует, чтобы все объявления имели класс As. "
Strict Off
, дает Object
Как я упоминал в комментариях, есть другие причины , почему Option Strict On
позволяет Linq работать более эффективно. В частности, вы не можете заставить Into Max (Anon.SomeString)
работать с Option Strict Off
, хотя есть несколько обходных путей.