Heenan, Lambert
Lambert.Heenan at chartisinsurance.com
Tue May 1 13:09:56 CDT 2012
Well that's OK then I suppose. Because in VB (null = null) returns null.
Lambert
-----Original Message-----
From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Salakhetdinov Shamil
Sent: Tuesday, May 01, 2012 1:53 PM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] CodePlex WCF Community code snippet
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
>
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com