рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВ IList рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреНрд░рд╛рдЪреАрди .Net рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рдерд╛ред рдХреНрдпреЛрдВ рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереА рдПрдХ рдЕрд▓рдЧ рд▓рдВрдмреА рдХрд╣рд╛рдиреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ, рд╢рд╛рдпрджред рдЕрдЧрд▓реА рдмрд╛рд░ рдмрддрд╛рдКрдВрдЧрд╛ред
рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдХрд┐рди рддрд░реАрдХреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
foreach(var tp in typeof(IList).GetMembers()) Console.WriteLine(tp.Name);
... рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ:
get_Item set_Item Add Contains Clear get_IsReadOnly get_IsFixedSize IndexOf Insert Remove RemoveAt Item IsReadOnly IsFixedSize
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрд╕рд░реНрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЧреБрдг рдХреЗ рдЧреЗрдЯрд░ рдФрд░ рд╕реЗрдЯрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рд╣рдорд╛рд░реЗ рд╕рд╛рдеред рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддреАрди рдФрд░ рдЧреБрдг рд╣реИрдВ: рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЖрдЗрдЯрдо, рдФрд░ рджреЛ рдкреБрдирд░реНрдЬрдиреНрдо рдЧреБрдг IsReadOnly рдФрд░ IsFixedSizeред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд╛рдореЛрдВ рдХрд╛ рдЕрд╕реНрдкрд╖реНрдЯ рджреЛрд╣рд░рд╛рд╡ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ: get_IsReadOnly // IsReadOnly, get_IsFixedSize // IsFixedSize, get_Item // set_Item / рдЖрдЗрдЯрдоред рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛ рдФрд░, рд╕реНрд╡рдпрдВ рд╡рд░реНрдЧ рдЧреБрдгреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧреБрдгреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рднреА рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдирд┐рдХрд▓рд╛ рд╣реИ:
foreach(var tp in typeof(IList).GetMembers()) Console.WriteLine("{0} -- {1}", tp.Name, Enum.GetName(tp.MemberType.GetType(), tp.MemberType));
рдЗрд╕ рдХреЛрдб рдиреЗ рдореБрдЭреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рдЪрд╛рд░ рджрд┐рдпрд╛ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ:
get_Item -- Method set_Item -- Method Add -- Method Contains -- Method Clear -- Method get_IsReadOnly -- Method get_IsFixedSize -- Method IndexOf -- Method Insert -- Method Remove -- Method RemoveAt -- Method Item -- Property IsReadOnly -- Property IsFixedSize -- Property
рддреЛ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ get_IsReadOnly IsReadOnly рд╕рдВрдкрддреНрддрд┐ (рдЬреЛ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕рджрд╕реНрдп рд╣реИ, рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде-рд╕рд╛рде) рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ, рдЬреИрд╕реЗ get_IsFixedSize рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ IsFixedSize рдЧреБрдг рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдЗрдЯрдо рдХреА рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдПрдХ рд╕реЗрдЯрд░ рдФрд░ рдПрдХ рдЧрдЯрд░ рд╣реИ, рдпрд╛рдиреА рдЗрд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рддреБрд░рдВрдд рд╕реЛрдЪрд╛: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИрдВред
рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдкрдХрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрдХреАрди рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдРрд╕рд╛ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛:
public class Test1 { public int A { get; set; } public int get_A() { return 0; } }
рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:
Type 'TestArray.Test1' already reserves a member called 'get_A' with the same parameter types
рдЖрдЗрдЯрдо рдХреА рджреВрд╕рд░реА рд╕рдВрдкрддреНрддрд┐ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рдХрд▓реАред рдореЗрд░рд╛ рдХреВрдмрдбрд╝ рдХрд┐ рдПрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИ, рд╕рдЪ рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕ рдмрд╛рд░ рдПрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдд рдХреЗ рд╕рд╛рде рдПрдХ рджреВрд╕рд░реЗ рдЕрд╕рдореНрдмрджреНрдз рд╡рд░реНрдЧ рдХреЛ рдЬреАрддрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:
public class Test2 { public int Item { get; set; } public int this[int num] { get { return 0; } } }
рдЗрд╕ рдмрд╛рд░ рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдг рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдерд╛, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рднреА рд╕реНрдкрд╖реНрдЯ рдерд╛:
The type 'TestArray.Test2' already contains a definition for 'Item'
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рдХ рдХреЛ "рдЯреНрд░рд┐рдХ" рдХрд░рдиреЗ рдХрд╛ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░рдпрд╛рд╕ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдХрд▓рд┐рдд рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдЙрджрд╛рд╣рд░рдг рдХрдХреНрд╖рд╛рдПрдВ,
public class Test4 { public int Item { get; set; } } public class Test3 { public Test3 get_Item(int index) { return this; } public void set_Item(int index, Test3 value) { } }
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдХреНрд╖рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛:
Cannot apply indexing with [] to an expression of type 'TestArray.Test4'
рдЗрд╕ рддрд░рд╣ рд╕реЗред рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рдХ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреЗрдЪреАрджрд╛ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред
рдПрдХ рдЫреЛрдЯреА рдЬрд╛рдВрдЪ рд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
- рд╕реА # рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЛрдВ рдХрд╛ рдирд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ "рдЪреАрдиреА" рдЬреИрд╕реЗ рдЗрдВрдбреЗрдХреНрд╕рд░ рдФрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рд╕реЗрдЯрд░ / рдЧреЗрдЯреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
- рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рдирд╛рдореЛрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛, рдЖрдк рдирд╛рдо рдЯрдХрд░рд╛рд╡ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ .net рдЖрдВрддрд░рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╕рдордЭрдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
- рдЖрдЗрдЯрдо рдкреНрд░реЙрдкрд░реНрдЯреА рдФрд░ рдЙрд╕рдХреЗ рд╕рдВрдЧрдд рд╕реЗрдЯрд░ рдФрд░ рдЧреЗрдЯрд░реНрд╕ рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд┐рдВрдЯреЗрдХреНрд╕ "рд╕реНрдХреНрд╡рд╛рдпрд░ рдмреНрд░реИрдХреЗрдЯреНрд╕" (= рдЗрдВрдбреЗрдХреНрд╕рд░) рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЧреЗрдЯ_ рдЗрдЯреЗрдо () рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░ рд╣реИред
рдЕрдЧрд░ рд▓реЗрдЦ рд╕реБрдЦрдж рд╣реИред рдлрд┐рд░ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ IList рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред