Workflows use VB.Net syntax for expressions. 

WorkflowEditor 2.x will support C# syntax for expressions.


VB.NetC#
Case-sensitivenoyes

Null reference


Nothing
VB
null
C#
Equals operator===
Equals Not operator<>!=
Comparison to null
a is Nothing
VB
a == null
C#
Character literal"a"C'a'
String escaping

Backslash: "\"

Quotes: double quote

Backslash: "\\" or @"\"

Quotes: "\"" or @"""" (double quote)

Access indexed elementsRound brackets ( )Square brackets [ ]
Generic types
New List(Of String)
New Dictionary(Of String, Object)
VB
new List<string>()
new Dictionary<string, object>()
C#
Object initializers
New Entry With { .Title = "Test" }
VB
New List(Of String) From { "abc", "def" }
VB


For a typed array Int32[]

{ 3,1,4 }
VB
new Entry { Title = "Test" }
C#
new List<string> { "abc", "def" }
C#


For a typed array Int32[]

{ 3,1,4 }
C#
Short-circuiting logical operators
a AndAlso b
a OrElse b
VB

And/Or are always evaluating ALL parts of it!

a && b
a || b
C#
Non-short circuiting logical operators
a And b
a Or b
VB


Example:

Not (entry Is Nothing) And entry.Title = "Test"
VB

Will throw exception when entry is Nothing!

n/a
Anonymous function
Function(a,b) a+b
VB
(a,b) => a + b
C#
LINQ
a.Select(Function(n) n+1).ToArray()
VB
a.Select(n => n+1).ToArray()
C#
Data type namesIntegerint


Also see https://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET