我是C#的初学者,现在正在学习泛型,是拿.ner framework的类库中的List<T>类的源代码做例子,下面是源代码
有几行看不懂,望高手指教,    [DebuggerTypeProxy(typeof(Mscorlib_CollectionDebugView<>))] 
    [DebuggerDisplay("Count = {Count}")]
    [Serializable] 
 
    public class List<T> : IList<T>, System.Collections.IList
    { 
        private const int _defaultCapacity = 4;//默认容量
        private T[] _items;
        [ContractPublicPropertyName("Count")] 
        private int _size;
        private int _version; 
        [NonSerialized] 
        private Object _syncRoot;
        static readonly T[]  _emptyArray = new T[0];        // Constructs a List. The list is initially empty and has a capacity
        // of zero. Upon adding the first element to the list the capacity is 
        // increased to 16, and then increased in multiples of two as required.#if !FEATURE_CORECLR 
   [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] 
#endif
        public List() { 
            _items = _emptyArray;
        }        // Constructs a List with a given initial capacity. The list is 
        // initially empty, but will have room for the given number of elements
        // before any reallocations are required. 
#if !FEATURE_CORECLR
        [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] 
#endif
        public List(int capacity) {
            if (capacity < 0) ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.capacity, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum);
            Contract.EndContractBlock(); 
            _items = new T[capacity];
        } 
====================================
以下几行代码看不懂,望高手指点这几行是分别什么意思
 [DebuggerTypeProxy(typeof(Mscorlib_CollectionDebugView<>))] 
  [DebuggerDisplay("Count = {Count}")]
   [Serializable] #if !FEATURE_CORECLR 
   [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]