You are writing a method that returns an ArrayList named al. 
You need to ensure that changes to the ArrayList are performed in a thread-safe manner.
Which code segment should you use?
A.
ArrayList al = new ArrayList(); 
lock (al.SyncRoot){ 
return al; 
}
B.
ArrayList al = new ArrayList(); 
lock (al.SyncRoot.GetType()){ 
return al; 
}
C.
ArrayList al = new ArrayList(); 
Monitor.Enter(al); 
Monitor.Exit(al); 
return al;
D.
ArrayList al = new ArrayList(); 
ArrayList sync_al = ArrayList.Synchronized(al); 
return sync_al;
Explanation:
A & C the lock will be released when the method returns.
B Does not lock the arraylist but attempts to lock its type.
                
I agree with the answer. D
0
0