рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ:
рдпрд╣ рдкреВрд░реНрд╡ рд╕реА # рдбреЗрд╡рд▓рдкрд░ рдПрд░рд┐рдХ рд▓рд┐рдкрд░реНрдЯ рдХреЗ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХрд╛ рдПрдХ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рдж рд╣реИред рд░рд┐рдХреЙрд░реНрдб рдПрдХ "рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░" рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рдореИрдВ рдкреНрд░рд╢реНрди рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ рдФрд░ рдЙрддреНрддрд░ рдкрд░ рдЬрд╛рдКрдВрдЧрд╛, рдЖрдк рдореВрд▓ рдореЗрдВ рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рд▓реЗрдХрд┐рди, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реВрдВрдЧрд╛, рдФрд░ Google рдФрд░ рд╕рдВрдХрд▓рди рдХреЗ рдмрд┐рдирд╛, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдХрд┐ рддреБрд▓рдирд╛ рдХреЗ 9 рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрддреНрддрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ (рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП):
int myInt = 1; short myShort = 1; object objInt1 = myInt; object objInt2 = myInt; object objShort = myShort; Console.WriteLine(myInt == myShort);
рд╕реА # рднрд╛рд╖рд╛ рдХреЛ рдбреЗрд╡рд▓рдкрд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдЕрд░реНрдерд╛рддреН, рдПрдХ рдРрд╕реА рднрд╛рд╖рд╛ рдЬрд╣рд╛рдВ
рд╕реНрдкрд╖реНрдЯ рддрдХрдиреАрдХ рдФрд░
рд╕рд╣реА рддрдХрдиреАрдХ рдПрдХ рдФрд░ рдПрдХ рд╣реА рд╣реЛред рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рддреБрд▓рдирд╛ рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЬрд╛рд▓ рд╣реИред
рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдХреЛрдбреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗред
рдЙрддреНрддрд░ int myInt = 1; short myShort = 1; object objInt1 = myInt; object objInt2 = myInt; object objShort = myShort; Console.WriteLine(myInt == myShort);
рдЕрд░реЗ рдпреЗ рдХреНрдпрд╛? рдЖрдЗрдП рдЗрд╕реЗ рдХреНрд░рдо рдореЗрдВ рд▓реЗрдВред
рдкрд╣рд▓реЗ рдФрд░
рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐
==
рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред C # рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд
==
рдСрдкрд░реЗрдЯрд░ рд╣реИрдВред
object == object string == string int == int uint == uint long == long ulong == ulong ...
рдЪреВрдБрдХрд┐ рдХреЛрдИ
int == short
рдпрд╛
short == int
рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ
int == int
рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░,
short
рдХреЛ
int
short
рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рджреЛ рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдореВрд▓реНрдп рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реЗ рд╕рдорд╛рди рд╣реИрдВред
рддреАрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕реЗ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╕рдорд╛рди рддрд░реАрдХреЛрдВ рдХреЛ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдХреЙрд▓рд┐рдВрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдПрдХ
int
рдкреНрд░рдХрд╛рд░ рд╣реИ, рдФрд░ рдпрд╣ рддреАрди
Equals
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
Equals(object, object)
рдкрд╣рд▓рд╛ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рддрд░реНрдХ рдирд╣реАрдВ рд╣реИрдВред рдЕрдиреНрдп рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рдЬреЛ
int
рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИ;
object
рд╕реЗ
short
int
рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП,
Equals(int)
рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдореВрд▓реНрдп рдХреЗ рджреНрд╡рд╛рд░рд╛ рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реБрдП
int
рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рд╣реА рд╣реИред
рдЪреМрдереЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕
Equals
рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреЙрд▓рд┐рдВрдЧ рдХрд╛ рдкреНрд░рдХрд╛рд░
short
, рдЬрд┐рд╕рдореЗрдВ рдлрд┐рд░ рд╕реЗ рддреАрди
Equals
рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВред
Equals(object, object)
рдкрд╣рд▓реА рдФрд░ рддреАрд╕рд░реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реА рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рдХрдо рддрд░реНрдХ рд╣реИрдВ, рдФрд░ рддреАрд╕рд░реА рд╡рд┐рдзрд┐ рдХреЛ рдирд╣реАрдВ рдЪреБрдирд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐
short
рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд╣рд┐рддрд╛рд░реНрде рдХреА рдХреЛрдИ рдирд┐рд╣рд┐рдд рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред
short.Equals(object)
рд╡рд┐рдзрд┐ рдмрдиреА рд╣реБрдИ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:
bool Equals(object z) { return z is short && (short)z == this; }
рдЕрд░реНрдерд╛рддреН, рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ
true
,
рдкреИрдХреЗрдЬреНрдб рддрддреНрд╡ рдХрд╛ рдкреНрд░рдХрд╛рд░
short
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╕рдорд╛рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ
int
, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдзрд┐
false
рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред
рдкрд╛рдВрдЪрд╡реЗрдВ ,
рдЫрдареЗ рдФрд░
рд╕рд╛рддрд╡реЗрдВ рдореЗрдВ ,
object == object
рддреБрд▓рдирд╛ рдлреЙрд░реНрдо рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ
object == object
рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд╕рдВрджрд░реНрдн рд╡рд┐рдзрд┐ред рдЬрд╛рд╣рд┐рд░ рд╣реИ,
рдкрд╛рдВрдЪрд╡реЗрдВ рдорд╛рдорд▓реЗ рдореЗрдВ рджреЛрдиреЛрдВ рд▓рд┐рдВрдХ рд╕рдорд╛рди рд╣реИрдВ рдФрд░
рдЫрдареЗ рдФрд░
рд╕рд╛рддрд╡реЗрдВ рдореЗрдВ рдЕрд╕рдорд╛рди рд╣реИрдВред рдкреНрд░рдХрд╛рд░
object
рдЪрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рдореВрд▓реНрдп рдорд╣рддреНрд╡рд╣реАрди рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рддреБрд▓рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд▓рд┐рдВрдХ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред
рдЖрдард╡реЗрдВ рдФрд░
рдиреМрд╡реЗрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐
Object.Equals
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
public static bool Equals(object x, object y) { if (ReferenceEquals(x, y)) return true; if (ReferenceEquals(x, null)) return false; if (ReferenceEquals(y, null)) return false; return x.Equals(y); }
рдЖрдард╡реЗрдВ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд▓рд┐рдВрдХ рд╣реИрдВ рдЬреЛ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИрдВ рдФрд░
null
рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП,
int.Equals(object)
рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рдЖрдк
short.Equals(object)
рд╡рд┐рдзрд┐ рдХреЗ рдХреЛрдб рдХреЛ рджреЗрдЦрдХрд░ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ:
bool Equals(object z) { return z is int && (int)z == this; }
рдЪреВрдБрдХрд┐ рддрд░реНрдХ рдЯрд╛рдЗрдк
int
рдХрд╛ рдПрдХ рдкреИрдХреНрдб рдЪрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреБрд▓рдирд╛ рдХреА рдЬрд╛рдПрдЧреА рдФрд░ рд╡рд┐рдзрд┐
true
рд╣реЛ рдЬрд╛рдПрдЧреАред
рдиреМрд╡реЗрдВ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреИрдХреНрдб рдЪрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛
short
, рдЗрд╕рд▓рд┐рдП, рдкреНрд░рдХрд╛рд░ (
z is int
) рдХреА рдЬрд╛рдВрдЪ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧреА, рдФрд░ рд╡рд┐рдзрд┐
false
рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред
рдкрд░рд┐рдгрд╛рдо :
рдореИрдВрдиреЗ рджреЛ рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреМ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рджрд┐рдЦрд╛рдП, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рддреБрд▓рдирд╛ рдХрд┐рдП рдЧрдП рдЪрд░ рдПрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЖрдзреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рддреБрд▓рдирд╛
true
ред рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╛рдЧрд▓ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рднреНрд░рд╛рдордХ рд╣реИ, рддреЛ рдЖрдк рд╕рд╣реА рд╣реИрдВ! C # рдореЗрдВ рддреБрд▓рдирд╛ рдмрд╣реБрдд рдХрдкрдЯреА рд╣реИред