I would like to introduce you new vb.net 2010 features some of which have been missing since long and developers were always craving for them. These new features are bundled with VB.Net in .NET framework 4.0 and they will surely going to improve developer's productivity and code quality .
Implicit line continuation: You don't need to put underscore character at the end of the line to make compiler understand that this line is extending to next line. Though underscore is still needed in couple of cases for e.g. declaring attribute at the top of function or class. e.g.
Dim s As String = "Hello" &
"World"
is a valid statement. Ofcourse if you want to make it more readable you should still use underscore as continuation
Dim s As String = "Hello" _ 'using underscore otherwise it would be difficult
& "World" 'to understand if line is extended to next line or not
Auto implemented properties: Like C# in VB.NET too you don't need to write get/set functions if they are meant to be used as default. for e.g.
Public Class Student
Property Age As Integer
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class
You can see Property "Age" is auto implemented and we don't need to explicitly write its get/set functions. Internally compiler will automatically generate the fields starting with underscore.
Object initializer: Now like C#, it is possible in vb.net to set object properties during the time of its initialization. We can construct the earlier mentioned Student class object as following
Dim myStudent As New Student With {
.Age = 20,
.Name = "Abhishek"
}
Multiline lambda or Anonymous methods: Earlier vb.net used to support single line anonymous method only which made using lambda or anonymous method bit annoying. you had to write statements something like this
Dim mySub = Sub() Debug.WriteLine("Difficult to write complex implementation")
but now with vb.net 10 you can write multiline anonymous methods with ease
Dim mySub = Sub(newStudent As Student)
Dim myStudent As New Student With {
.Age = 20,
.Name = "Abhishek"
}
newStudent = myStudent
End Sub
Implicitly typed or inferred local variables (Anonymous types): If you have worked in C#, it's exactly how 'var' is used in C#. The object type is inferred from the value it has been assigned. for e.g.
Dim myInt = 4
Dim myString = "Abhishek"
Dim myStudent = New Student With {.Age = 20, .Name = "Abhishek"}
Here how compiler is going to read it
Dim myInt As integer = 4
Dim myString As string= "Abhishek"
Dim myStudent As Student= New Student With {.Age = 20, .Name = "Abhishek"}
In C# you cannot assign a null value to anonymous type ('var') but if the type of object is already inferred, you can assign a null value to it for e.g.
in C#
var myObj = null //not possible
*********************
var myStudent = New Student
myStudent = null //works
in VB.Net
Dim myObj = nothing 'works
myObj will be inferred as 'object' type
There are few more new features which I would love to mention in my next couple of posts for e.g. LinqToXML, QueryComprehension, Extension Methods etc.
Happy reading!!!