??? ?? ???????? ??????, ?????????? ????? C# ??????????? ????????? ??? ?????? ????????????? ????. ? ????????? ?????? ?????????? ????????????? ? ???, ??? ????? ?????? ???????? ????????????.
const object x = null;
void Foo()
{
if (x != null)
{
Console.WriteLine(x.GetHashCode());
}
}
???????????, ?? ?????? “if” ? ??????? ???? ????? ??????.
const object x = null;
void Foo()
{
Console.WriteLine(x.GetHashCode());
}
?????????? ?? ??????????? ??? ? ??????????????? ??????? ??????! ? ????? ????? ?????? ??????, ???????
?, ??? ??????, ????? ??????? ? ???, ??? ??? ?? ????? ???????? ?????????? ?? ??, ?????? ?? ?? ??????????? ?????-?? ???????????. ?????????? ????? ??????????? ??????? ???????, ??????? ? ??????, ? ????? ???????? ????????, ????? ? ?????? ?? ?????? ?????, ??????? ???? ?? ????? ????????? ??? ????????????, ??? ??? ????? ????? ??????????? ?????? ??????????? ? ????? ?????? ????????? ????/????????. ??????? ???????? ?? ???? ? ????? ????? ??????.
??? ??????? ????????? ????? ??????????? ? ????? ???? ????????? ?????? «???????? ?? ??? ??????????? ??????? ??????? ????? ????? ???????» ?? ????, ???????????? ??????????? ????????????? ??? ??????????? ????, ??? ????????? ?????????? ?????? ????? ?????????????. ????? ?? ?? ?????????? ????????, ????? ????????? ?????????? ????? ????????????? ? ????? ??????, ? ???????? ?? ???? ??????????????? ??? ?? ??? ?????????, ?????? ??????? ???? ???????? ???????? ??????? ???????? ????????? (Halting Problem). ?? ???? ??? ?????, ?? ?? ????? ???????? ?????????????? ?????? ???, ????? ????? ?????, ??? ?????????? ?????? ???? ?????????????; ????? ????????? ???????? ???? ????? ????????? ? ??????????????:
int M()
{
throw new NotImplementedException();
}
???????? ???? ????????? ????? ?????????? –????? ??????? ? ???, ??? ??? ????? ????????? ?? ????????; ??????????????, ??????? ????? ???????? ? ???, ??? ??? ?? ???????? ????????????????; ?????????????? ?????? ???????? ? ???, ???? ?? ??? ?? ??????.
????, ??????? ???????? ? ??????????? ??????????? ????????????? ????????? null. ? ??????, ??? ????? ????? ??????????? ?????? ? ?????? ?????????, ?????? null; ????????, ????? ???????? ???-?? ????: «if (symbol == InvalidSymbol)», ??? InvalidSymbol – ??? ?????????, ?????? null; ??? ????????? ?????? ???, ??? ????? ?? ??????? ?? ???????????? ?????. ? ?????, ???? ???-?? ???????? ??????? «InvalidSymbol.Name», ?? ?????????? ?????? ?????????????? ? ??????? ??????????????? null.
?? ??? ????????? ???????? ???????. ????? ????, ? ?????? ?????? ????????, ??????? ? ??? ???? ???? ?????. ??? ??? ??????? ????????? ?? ????.
??? ??????????? ???????? ????????; ??????????? ??? ??????? ?????????? ? ???? ?????????, ? ?? ???????? ?????? ????? ??? ??????????. ??????, ??????? ???????? ?????? ?????????????? ??????????? ????; ? ???????? ? ????????? ????? ????????? ?? ??? ??????? ? ?? ??????, ? ??? ????????? ? ????. ????? ????, ???????? ???????? ??? ???????????? ????.
????? ????? ????, ?? ????? ???????? ??? ??????????? ? ?????-?? ?????? ????? ????????, ?????????? ??? ?? ????????????? ????? ????????????? ??????? ??????, ? ?? ?????? ????????????? ????????. ?????? ??????? ???? ??????, ?????-????, ???????? ? ??????? ???????? ?????????, ???, ??? ?? ?????, ??????????, ?? ?? ????? ???????????? ????????? ????? ????????? ??? ????????? ????????? ??????????.
?? ????? ???? ???? ?????? ?????????? ????? C# ???????? ????????? ????? ?????????; ??? ???????????? ??? ??????????? ?????????????? ???????? ??? nullable-??????. ???? ?? ????? ?????????? ?? ?????, ??? ??????????? ????????? ?????? ????? null, ?? ?????????? ?????????? ????? ??????????? ???. (??? ?? ??? ??????, ???????? ???????? ????? ??? ??????? ??????.) ?????? ??????? ????????? ???????? ??????????? «??????????»; ????????, ?? ????????????? ???????, ????? ????????? ?????????? ????????????? null, ? ????? ??? ???????????? ?? ????????????????. ??? ???, ?????-????, ?????????? ????, ??? ???????????? ????? ??????????????, ????? ?????????, ????????, ?????? ?????????.
??? ??????????? ?????????? ???? ??????????? ??? ???????? ?????????????? ???????? ???????????, ????????????, ??? ?????????? ???????? ?????????????????????, ?? ????????, ??????? ????? ?????????????, ??? ?? ????????????? ?????????? ????????? ?? ??????? ????????. ??? ??????????? ??????? ???????????; ?? ???? ????? ?????? ??????, ?? ? ????????? ??????? ??????.
?? ??????? ???????? ????????? ????? ????? ??????. ??, ??????????? ????? ????? ?????? ?? ????? ??????????, ?? ?????? ??????????????? ??????? ??????, ??????? ????? ???? ?????????????? ??????? ????????????, ????? ????? ????????? ?? ????? ??????????, ????????? ??? ??????????? ????????? ??? ???????????? ????. ??? ??? ?????????? ? ?????????? ?????? ?????????? ???? ???????????.
????, ?? ????, ?????? ??????????? ???????????? ?????????? ?????????? ???????? ?????????, ??????? ????? ?????????? ?? ????? ?????????? ????????? ????????????? ???????, ??????? ? ??? ?????? ????? ??????????? ??? ?????? ??????? ????. ????? ???????, ??? ??????????? ???????? ?? ?????? ?????????? ??? ???????????? ?? ??? ???????; ??? ??? ??? ??????? ?? ????? ???????????. ??? ???????? ??????????? ? ? ??? ?? ????? ??? ????? ?? ? ???????????, ?? ??? ?? ???????? ????????? ????????, ????? ??????? ???????? ?? ?? ??????????, ?????????? ? ????????????, ????? ? ??? ???? ????? ?????? ????? ?????????????????? ?????.
????? ????, ?? ????? ????????, ??? ????? ???????????, ??? Code Contracts (??????????? ? .NET 4), ReSharper ? ?????? ??????????? ??????????? ???????? ??????????? ???????????? ??????? ??? ??????????? ?????????? ??? ???????????????? ??????? ? ??????? ???????. ??? ??? ??? ??????????, ??? ??? ??????????? ??????????. ?? ??? ????? ??????? ?????? ?????????? ?????? ?????????????? ? ??????????. ??? ? ??? ?????, ???? ??? ???? ??????????, ??????? ???????? ????????? ??????, ?? ????? ??????????? ?? ? ???????????? ?????????? ?? ?????? ???? ???????????? ? ?????????? ???????????? ??????? ????; ?? ????? ????, ?? ??????? Roslyn ?????? ??? ????, ????? ?????? ???????? ????? ????????????? ???????? ???????????. ?? ?? ????? ??????????? ??? ???????? ??????????? ??? ??????? ????, ?? ?? ????? ??????? ??? ?????? ????? ??? ????-?? ???????!
Comments are closed.