Lambda functions, both in C# and in VB.NET are compiled to methods that are put in a hidden class. What you are seeing is the name of the method. You can't change it, you can't assign it, you can't even be sure the name will be the same between compilations (the names are autogenerated based on the "order" of the lambda functions).
SharpLab example in VB.NET:
This:
Public Class C
Public Sub M()
Dim test2 As Func(Of String, Integer) = Function(xuy As String) xuy.Length * 2
End Sub
End Class
is compiled to something that if decompiled in C# is:
[Serializable]
[CompilerGenerated]
internal sealed class _Closure$__
{
public static readonly _Closure$__ $I;
public static Func<string, int> $I1-0;
static _Closure$__()
{
$I = new _Closure$__();
}
internal int _Lambda$__1-0(string xuy)
{
return checked(xuy.Length * 2);
}
}
public void M()
{
if (_Closure$__.$I1-0 != null)
{
Func<string, int> $I1- = _Closure$__.$I1-0;
}
else
{
_Closure$__.$I1-0 = new Func<string, int>(_Closure$__.$I._Lambda$__1-0);
}
}
And SharpLab example in C#:
This:
public class C {
public void M() {
Func<String, int> test2 = xuy => xuy.Length * 2;
}
}
is compiled to this:
public class C
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static Func<string, int> <>9__0_0;
internal int <M>b__0_0(string xuy)
{
return xuy.Length * 2;
}
}
public void M()
{
if (<>c.<>9__0_0 == null)
{
<>c.<>9__0_0 = new Func<string, int>(<>c.<>9.<M>b__0_0);
}
}
}
In both cases the hidden class introduced is quite easy to see.