Обрабатывает ли обобщенная функция неявно типы значений для объектов при проверке на нулевое значение?

Например, следующий код демонстрирует мою точку зрения:

class Program
{
    static void Main(string[] args)
    {
        int i = 0;
        IsNull(i);  // Works fine

        string s = null;
        IsNull(s);  // Blows up
    }

    static void IsNull(T obj)
    {
        if (obj == null)
            throw new NullReferenceException();
    }

}

Также следующий код:

int i = 0;
bool b = i == null;  // Always false

Происходит ли неявное приведение объекта? такой что:

int i = 0;
bool b = (object)i == null;

Ответы на вопрос(3)

Ваш ответ на вопрос