рдПрдХ рдФрд░ рдХрд╛рд░рдг рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЦрд░рд╛рдм рд╣реИрдВ

рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкрд░ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╕рднреА рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕ рд╕рд╡рд╛рд▓ рдкрд░, рдореБрдЭреЗ рдЬрд╡рд╛рдм рдорд┐рд▓рд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рддрд░рдл, рд╣рд╛рдБ, рдпрд╣ рд▓рдЧрддрд╛ рд╣реИ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рддрд╛рд░реНрдХрд┐рдХ, рдХреЛрдИ рднреА рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдФрд░ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред



рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдУрд░, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рд▓ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╡рд╣рди рдХрд░рддрд╛ рд╣реИред



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдореЗрдореЛрд░реА рджреЛрдиреЛрдВ рдХреЛ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдПрдХ рдкреНрд░рддрд┐ рд╣реИ, рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдХрд┐рд╕реА рднреА рд╕рд░рдгреА рдХреЛ рдмрдбрд╝реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реАрдк рдореЗрдВ рдЧрд┐рд░рдиреЗ рдХреА рд▓рдЧрднрдЧ рдЧрд╛рд░рдВрдЯреА рд╣реИ, рдЬреЛ рджреЛрдиреЛрдВ рдкреНрд░рджрд░реНрд╢рди (рдЬреАрд╕реА рдореЗрдВ рдмрдврд╝реЗ рд╣реБрдП рд╕рдордп рдХреЗ рдХрд╛рд░рдг) рдФрд░ рдореЗрдореЛрд░реА (рдЦрдВрдбрд┐рдд рд╣реАрдк рдмрд╣реБрдд рдЦрд░рд╛рдм) рд╣реИред



рджреВрд╕рд░реЗ, рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:



class Program

{

static void Main( string [] args)

{

Foo[] f = new [] { new Foo {Field = 5}};



for ( int i = 0; i < f.Length; i++)

{

Foo foo = f[i];

foo.Field = 10;

Console .WriteLine(foo.Field);

}



Console .WriteLine(f[0].Field);

}

}

struct Foo

{

public int Field;

}



* This source code was highlighted with Source Code Highlighter .








рд╕реНрдХреНрд░реАрди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧреА,

 10
 5


рд▓реЗрдХрд┐рди рдпрд╣ рддрдереНрдп рдХрд┐ рдпрд╣ "рдкрд╛рдареНрдпрдХреНрд░рдо" рдХреЛрдб рдХреЗ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрдзреНрдпрдпрди рдХреЗ рдмрд╛рдж рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░, рдХреЗрд╡рд▓ рдЖрдИрдбреАрдИ рдХреЗ рд╕рд╛рде - рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдлреВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рджрд░реНрд╢рдХ рдореЗрдВ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдлреВ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред .NET рдбреЗрд╡рд▓рдкрд░реНрд╕ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЖрджреА рд╣реИрдВ (рдЬреЛ, рд╕рдВрдпреЛрдЧрд╡рд╢, рд░рд┐рд╕реНрдкреЗрдкрд░ рдореЗрдВ рдмрдЧ рджреНрд╡рд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рд╣реЛрддрд╛ рд╣реИ - рд╡рд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ 'рдлреЙрд░' рд╕рд╛рдЗрдХрд▓ рд╡рд┐рдж 'рдлреЙрд░рдЪреЗрдХ', рдЬреЛ рдХрд┐ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рдЕрд╕рдВрднрд╡ рд╣реИ)ред



рдФрд░ рддреАрд╕рд░рд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, "рд╕реБрд░рдХреНрд╖рд╛" рдХреА рднрд╛рд╡рдирд╛ рднреНрд░рд╛рдордХ рд╣реИред рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдЕрдХреНрд╕рд░ рдРрд░реЗ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ (рднрд▓реЗ рд╣реА рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реЛрдВ), рдЬреЛ рдЗрди "рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп" рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ "рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп" рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

class Program

{

static void Main( string [] args)

{

Foo f = new Foo

{

Field = 5,

Bars = new []

{

new Bar {Name = "My Name" }

}

};



BadFunction(f);

Console .WriteLine(f.Bars[0].Name);

}



private static void BadFunction(Foo foo)

{

foo.Field = 10;

foo.Bars[0] = new Bar {Name = "Other Name" };

}

}

struct Foo

{

public int Field;

public Bar[] Bars;

}

struct Bar

{

public string Name;

}



* This source code was highlighted with Source Code Highlighter .








рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рдЖрдк "рдЕрдиреНрдп рдирд╛рдо" рджреЗрдЦреЗрдВрдЧреЗ, рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ рдФрд░ рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ рдХрд┐ рдлреВ рдХреЛрдИ рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ рдереА, рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдерд╛ред рд▓реЗрдХрд┐рди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЗрд╡рд▓ рд╕рд░рдгреА рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдЫрджреНрдо-рдЕрджреГрд╢реНрдп рдЬрд╛рд▓ рдореЗрдВ рдирд╣реАрдВ рдЧрд┐рд░рд╛, рдлрд┐рд░ рд╕реЗ, рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред



рдирд┐рд╖реНрдХрд░реНрд╖ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ (рдмреЗрд╢рдХ, рдХрд┐рд╕реА рдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдФрд░ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЛ рд░рджреНрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ):

  1. рдХреЗрд╡рд▓ рдЙрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЙрдЪрд┐рдд рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП P / Invoke)ред

  2. рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ - рдЪрд░рдо рдорд╛рдорд▓реЛрдВ рдореЗрдВ IEnumerable <T> рдпрд╛, IList <T> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ ReadOnlyCollection <T> рдХреЗ рд░реВрдк рдореЗрдВ)ред

  3. рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдмрдирд╛рдПрдВред




All Articles