Difference between assigning it to new list object and copying the list
<p>It might be basic question, but could anyone explain how does this work. Below code is just example, but in real time this scenario could occur in various places. For ex:  While creating DTO for complex object like Customer which has Orders property. Does Orders (=List) need to be instantiated in the constructor of the Customer or just directly assign it to the result of query or a stored procedure.</p>

<pre><code>List&lt;string&gt; list1 = new List&lt;string&gt;()
{
    "One", "Two","Three"
};

List&lt;string&gt; list2 = new List&lt;string&gt;();
list2 = list1;        
foreach (var s in list2)
  Console.WriteLine(s);

List&lt;string&gt; list3 = list1;
if (list3 != null) //is this the only difference
{
 foreach (var s in list3)     
     Console.WriteLine(s);     
}
</code></pre>

<p>I tried  checking the IL code but it wasn't self explanatory.</p>

<pre><code>    IL_0031: stloc.0
    IL_0032: newobj instance void class [mscorlib]System.Collections.Generic.List`1&lt;string&gt;::.ctor()
    IL_0037: stloc.1
    IL_0038: ldloc.0
    IL_0039: stloc.1
    IL_003a: ldloc.0
    IL_003b: stloc.2
    IL_003c: nop
    IL_003d: ldloc.1
    IL_003e: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator&lt;!0&gt; class [mscorlib]System.Collections.Generic.List`1&lt;string&gt;::GetEnumerator()
    IL_0043: stloc.s CS$5$0000
</code></pre>

<blockquote>
  <p>I am sorry for posting a confusing example. Below is the actual
  scenario</p>
</blockquote>

<p>DTO:</p>

<pre><code>public class CustomerBO
{
        public CustomerBO()
        {
            Orders = new List&lt;OrderBO&gt;(); 
        }
       List&lt;OrderBO&gt;() Orders { get; set;}
      //other properties of customer
}
</code></pre>

<p>Now in DAL layer:</p>

<pre><code>objCustomer.Orders = Repository.GetAll&lt;OrderBO&gt;("dbo.GetOrdersList");
</code></pre>

<p>My question is would it be ok if I initialize Orders object in the CustomerBO constructor (or) skip it and check for null in the presentation layer. </p>
