[AccessD] CodePlex WCF Community code snippet

Salakhetdinov Shamil mcp2004 at mail.ru
Tue May 1 12:53:07 CDT 2012


Hi Lambert,

In C#:

(null == null)

returns true.

-- Shamil

Tue, 1 May 2012 12:06:27 -0400 от "Heenan, Lambert" <Lambert.Heenan at chartisinsurance.com>:
> #6
> 
> public static bool CompareObjects6<T>(T o1, T o2) where T : class {
>     // 'Mere mortals' version refactored 2
>     if (o1 != null && o2 != null) return o1.Equals(o2);
>     return (o1 == o2);
> }
> 
> In VB land, if o1 is not null, but o2 us null then (o1 = o2) returns Null, not False. What happens in C#?
> 
> Lambert 
> 
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock
> Sent: Tuesday, May 01, 2012 11:55 AM
> To: accessd at databaseadvisors.com
> Subject: Re: [AccessD] CodePlex WCF Community code snippet
> 
> Hi Shamil
> 
> CompareObjects6 looks like the winner. And it is very logical to read as well.
> 
> /gustav
> 
> 
> >>> mcp2004 at mail.ru 01-05-2012 17:35 >>>
> Hi Gustav and Lambert at all:
> 
> Have a look I have added one mode 'Mere mortals' version:
> 
> C#
> ==
> 
> public static bool CompareObjects6<T>(T o1, T o2) where T : class {
>     // 'Mere mortals' version refactored 2
>     if (o1 != null && o2 != null) return o1.Equals(o2);
>     return (o1 == o2);
> }
> 
> And here are different version decompiled (compiled with 'Optimize code' option set).
> 
> What version is the winner IYO? (Do you have any other code snippets for this simple function to analyze?)
> 
> Decompiled
> ==========
> 
> // 'Mere mortals' refactored 2  (decompiled) public static bool CompareObjects6<T>(T o1, T o2) {
>     if (o1 == null || o2 == null)
>     {
>         return o1 == o2;
>     }
>     else
>     {
>         return o1.Equals(o2);
>     }
> }
> 
> // CodePlex  (decompiled)
> public static bool CompareObjects<T>(T o1, T o2) {
>     if (o1 == null == o2 == null)
>     {
>         if (o1 == null)
>         {
>             return true;
>         }
>         else
>         {
>             return o1.Equals(o2);
>         }
>     }
>     else
>     {
>         return false;
>     }
> }
> 
> // 'Mere Mortals' original  (decompiled) public static bool CompareObjects2<T>(T o1, T o2) {
>     if (o1 != null || o2 != null)
>     {
>         if (o1 == null || o2 != null)
>         {
>             if (o1 != null || o2 == null)
>             {
>                 return o1.Equals(o2);
>             }
>             else
>             {
>                 return false;
>             }
>         }
>         else
>         {
>             return false;
>         }
>     }
>     else
>     {
>         return true;
>     }
> }
> 
> // Gustav's original & refactored  (decompiled) public static bool CompareObjects3<T>(T o1, T o2) {
>     if (o1 != null && o2 != null)
>     {
>         return o1.Equals(o2);
>     }
>     else
>     {
>         if (o1 != null)
>         {
>             return false;
>         }
>         else
>         {
>             return o2 == null;
>         }
>     }
> }
> 
> 
> // 'Mere mortals' refactored (decompiled) public static bool CompareObjects5<T>(T o1, T o2) {
>     if (o1 != null || o2 != null)
>     {
>         if (o1 != null && o2 != null)
>         {
>             return o1.Equals(o2);
>         }
>         else
>         {
>             return false;
>         }
>     }
>     else
>     {
>         return true;
>     }
> }
> 
> Thank you.
> 
> -- Shamil
> 
> 
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 



More information about the AccessD mailing list