Things we love about VisualBasicDotNet:
(...sometimes related to ThingsWeLoveAboutVbClassic.)
Not to be confused with ThingsWeHateAboutVisualBasicDotNet.
List:
- XML Literals, right in the source code.
- SQL-like DLinq (LinqToSql?) syntax.
- The Overrides keyword.
- The Shared keyword, for "static" Fields and Methods.
- Has optional NamedParameters that are designed fairly well. I loooove named parameters.
Discussion:
- XML Literals, right in the source code.
You can embed XML literals right into your source code:
Dim xmlVar As XElement = _
<rootElement>
<innerElement1/>
<innerElement2>Constant text here.</innerElement2>
</rootElement>
and you can embed expressions to dynamically change element and attribute names and values
Dim xmlVar As XElement = _
<rootElement>
<nameElement type=<%= greetingType %>><%= "Hello " + nameVar + "." %></nameElement>
<<%= dynamicElementName %> <%= dynamicAttributeName %>="static attribute value"/>
</rootElement>
and
VisualBasic automatically does all the appropriate quoting, giving one a high level of protection against
SqlInjection attacks.
- SQL-like DLinq (LinqToSql?) syntax.
Query syntax in DLinq (LinqToSql
?) is much more like the
StructuredQueryLanguage (SQL) syntax we're accustomed to, rather than the "collections library" style syntax in C#.
In VisualBasicDotNet, one might do a DLinq query like this:
SELECT p2.ProductName?, p1.UnitPrice?
FROM dbo.ProductsCostingMoreThan?(80.50)
AS p1 INNER JOIN Products AS p2 ON p1.ProductID = p2.ProductID
Where in the
CsharpLanguage (C#), it would look more like this:
var q =
from p in db.ProductsCostingMoreThan?(80.50m)
join s in db.Products on p.ProductID equals s.ProductID
select new {p.ProductID, s.UnitPrice?};
The VB.NET syntax is much more like the
RelationalDatabase's SQL syntax than the C# version.
The C# version has all the same clauses, but they're in some other order that's "more natural" for a collections library.
Related: LanguageIntegratedQueryProject
For a
VisualBasic subclass to override a superclass method, you
must use the
Overrides keyword:
If the method signatures match and you don't have the
Overrides keyword, it's a compile error.
The Java 5
@Override annotation is nice, but when it's missing, the program might or might not still be overriding a superclass method, and the original programmer might or might not have been intending to override a superclass method; it can be hard to be sure.
But with
VisualBasic the intention and implementation are always clear: You see the
Overrides keyword
IfAndOnlyIf this method overrides a superclass method.
- The Shared keyword, for "static" Fields and Methods.
The
Shared keyword more clearly expresses that fields and methods are
Shared across all instances of a class -- making its usage much less error-prone than the C/C++/C#/Java overloading of the
static keyword for this purpose, particularly for relatively less experienced developers.
CategoryVisualBasic CategoryDotNet