Both the codes are equivalent and the IL code for both will be same. Here is a sample to demonstrate that the IL code for both will be similar:
private static void mycompareMethod()
{
var str1 = new String(new char[10]);
string str2 = new String(new char[10]);
}
The IL output:
{
.method private hidebysig static void mycompareMethod() cil managed
.maxstack 2
.locals init ([0] string str1,
[1] string str2)
IL_0000: nop
IL_0001: ldc.i4.s 9
IL_0003: newarr [mscorlib]System.Char
IL_0008: newobj instance void [mscorlib]System.String::.ctor(char[])
IL_000d: stloc.0
IL_000e: ldc.i4.s 9
IL_0010: newarr [mscorlib]System.Char
IL_0015: newobj instance void [mscorlib]System.String::.ctor(char[])
IL_001a: stloc.1
IL_001b: ret
} // end of method Program::mycompareMethod