<p>I've been programming in C# and Java recently and I am curious where the best place is to initialize my class fields.</p>

<p>Should I do it at declaration?:</p>

<pre><code>public class Dice
{
    private int topFace = 1;
    private Random myRand = new Random();

    public void Roll()
    {
       // ......
    }
}
</code></pre>

<p>or in a constructor?:</p>

<pre><code>public class Dice
{
    private int topFace;
    private Random myRand;

    public Dice()
    {
        topFace = 1;
        myRand = new Random();
    }

    public void Roll()
    {
        // .....
    }
}
</code></pre>

<p>I'm really curious what some of you veterans think is the best practice. I want to be consistent and stick to one approach.</p>

My rules:
Don't initialize with the default values in declaration (
```
null
```
,
```
false
```
,
```
0
```
,
```
0.0
```
…).
Prefer initialization in declaration if you don't have a constructor parameter that changes the value of the field.
If the value of the field changes because of a constructor parameter put the initialization in the constructors.
Be consistent in your practice (the most important rule).