Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
«No matter what type is involved, a == a is always true.»
На самом деле, для платформы .NET это правило исполняется не всегда. А вы можете привести пример, когда это условие нарушается?
double.NaN == double.NaN
class Program {
static int cntr=0;
static int a { get { return ++cntr; } }
static void Main(string[] args) {
Console.WriteLine("{0}",a==a);
}
}
Неточность #3. Об операторе ==
«No matter what type is involved, a == a is always true.»
… you need to keep in mind the mathematical properties of equality: Equality is reflexive, symmetric, and transitive. The reflexive property means that any object is equal to itself. No matter what type is involved, a == a is always true.
a == a is always trueэто всего лишь определение рефлексивности.
Неточность #5. Порядок создания объектовВыглядит как вырванное из контекста. Ну т.е. при создании экземпляра операции действительно выполняются в таком порядке. Аналогично:
1. Static variable storage is set to 0.— если статических членов нет, то и устанавливаться в ноль ничего не будет.
internal class Base
{
public Base()
{
Console.WriteLine("Base.ctor");
}
static Base()
{
Console.WriteLine("Base.cctor");
}
}
internal class Derived : Base
{
public Derived()
{
Console.WriteLine("Derived.ctor");
}
static Derived()
{
Console.WriteLine("Derived.cctor");
}
}
Derived.cctor
Base.cctor
Base.ctor
Derived.ctor
О книге Билла Вагнера «Effective C#»