Example (note the case):
string s = \"Hello world!\";
String s = \"Hello world!\";
What are
There's a quote on this issue from Daniel Solis' book.
All the predefined types are mapped directly to underlying .NET types. The C# type names (string) are simply aliases for the .NET types (String or System.String), so using the .NET names works fine syntactically, although this is discouraged. Within a C# program, you should use the C# names rather than the .NET names.