In VB.Net there are two uses of the keyword With
.
The first is object initialization. It's a means of assigning properties or fields of an object in the same line as an initialization expression without the need of a specific constructor for every permutation of fields.
Dim x = New Product With {.Name = "Foo"}
This type of expression can only be used to create new objects. It cannot be used to modify existing ones.
The second use is the With
statement. This allows you to put an object in context so to speak and call many . operations on it without qualification.
With x
Console.WriteLine(.Name)
.Match = 42
End With
Neither of these though will allow you to use an existing object as a template for creating a new object.