Я видел следующий код,
public override bool Equals(object obj)
{
// From the book http://www.amazon.co.uk/Pro-2010-NET-4-0-Platform/dp/1430225491
// Page 254!
if (obj is Person && obj != null)
...
}
Основываясь на моем понимании, я думаю, что код должен быть переписан следующим образом:
public override bool Equals(object obj)
{
if (obj is Person)
...
}
Правильно ли это?
На основе http://msdn.microsoft.com/en-us/library/scekt9xw%28v=vs.80%29.aspx
An выражение выражает true, если предоставленное выражение не является нулевым, и предоставленный объект может быть добавлен к предоставленному типу, не вызывая исключения.
Я думаю, что дополнительная проверка для null НЕ нужна вообще. Другими словами, этот код "obj!= Null" никогда не должен ударяться вообще.
Спасибо
//Обновлено//
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Employee
{
public static void CheckIsEmployee(object obj)
{
if (obj is Employee)
{
Console.WriteLine("this is an employee");
}
else if (obj == null)
{
Console.WriteLine("this is null");
}
else
{
Console.WriteLine("this is Not an employee");
}
}
}
class NotEmployee
{ }
class Program
{
static void Main(string[] args)
{
Employee e = new Employee();
Employee.CheckIsEmployee(e);
Employee f = null;
Employee.CheckIsEmployee(f);
NotEmployee g = new NotEmployee();
Employee.CheckIsEmployee(g);
}
}
}
Результаты вывода:
this is an employee
this is null
this is Not an employee