<p>What are the differences between these two and which one should I use?</p>
<pre><code>string s = &quot;Hello world!&quot;;
String s = &quot;Hello world!&quot;;
</code></pre>

```
string
```
is an alias in C# for
```
System.String
```
.
So technically, there is no difference.  It's like
```
int
```
vs.
```
System.Int32
```
.
As far as guidelines, it's generally recommended to use
```
string
```
any time you're referring to an object.
e.g.
```
```
string place = "world";
```
```
Likewise, I think it's generally recommended to use
```
String
```
if you need to refer specifically to the class.
e.g.
```
```
string greet = String.Format("Hello {0}!", place);
```
```
This is the style that Microsoft tends to use in
their examples
.
It appears that the guidance in this area may have changed, as
StyleCop
now enforces the use of the C# specific aliases.