Click here to Skip to main content
12,394,573 members (73,236 online)

Welcome to the Lounge

   

For lazing about and discussing anything in a software developer's life that takes your fancy except programming questions.

Technical discussions are encouraged, but click here to ask your programming question.

The Lounge is rated PG. If you're about to post something you wouldn't want your kid sister to read then don't post it. No flame wars, no abusive conduct, no programming questions and please don't post ads.
 
GeneralRe: Job Offer! Pin
Nagy Vilmos10-Jan-13 5:40
memberNagy Vilmos10-Jan-13 5:40 
GeneralRe: Job Offer! Pin
Colin Mullikin10-Jan-13 5:45
memberColin Mullikin10-Jan-13 5:45 
GeneralRe: Job Offer! Pin
CPallini10-Jan-13 5:52
mvpCPallini10-Jan-13 5:52 
GeneralRe: Job Offer! Pin
jeron110-Jan-13 6:23
memberjeron110-Jan-13 6:23 
GeneralRe: Job Offer! Pin
Mathlab10-Jan-13 6:21
memberMathlab10-Jan-13 6:21 
GeneralRe: Job Offer! Pin
PHS24110-Jan-13 6:22
memberPHS24110-Jan-13 6:22 
GeneralRe: Job Offer! Pin
DaveAuld10-Jan-13 6:45
mentorDaveAuld10-Jan-13 6:45 
GeneralRe: Job Offer! Pin
Wjousts10-Jan-13 7:05
memberWjousts10-Jan-13 7:05 
GeneralRe: Job Offer! Pin
Vasudevan Deepak Kumar10-Jan-13 7:11
memberVasudevan Deepak Kumar10-Jan-13 7:11 
GeneralRe: Job Offer! Pin
Deyan Georgiev10-Jan-13 8:07
memberDeyan Georgiev10-Jan-13 8:07 
GeneralRe: Job Offer! Pin
Jörgen Andersson10-Jan-13 8:26
memberJörgen Andersson10-Jan-13 8:26 
GeneralRe: Job Offer! Pin
Mike Hankey10-Jan-13 9:14
memberMike Hankey10-Jan-13 9:14 
GeneralRe: Job Offer! Pin
loctrice10-Jan-13 9:42
memberloctrice10-Jan-13 9:42 
GeneralMethod chaining with short-circuit parameter evaluation Pin
Chris Maunder10-Jan-13 3:53
adminChris Maunder10-Jan-13 3:53 
I am testing several depths of properties in an object to make sure they are safe before I call them:
Test.NotNull(myObject);
if (myObject != null)
{
    Test.NotNull(myObject.MyProperty);
    if (myObject.MyProperty != null)
        Test.IsPositive(myObject.MyProperty.Id);
        ...
}
I was thinking it would be really cool to be able to do
Test.NotNull(myObject).NotNull(myObject.MyProperty).IsPositive(myObject.MyProperty.Id);
but obviously if myObject == null then we have a runtime null ref error because, regardless of what the NotNull method returns as part of the chaining, myObject is still null.

So this got me thinking: You can do
if (myObject != null && myObject.MyProperty != null)
because of short circuit boolean evaluation in C#, but I was wondering, with my fairly mainstream experience in languages, if there are languages out there that would allow chaining of methods with short circuit evaluation.

Essentially you'd have to have the input parameter be resolved after the method was called in order to have the method be able to say "I don't need the input parameter, please just ignore it".

Has anyone heard of this? Would it open up a World Of Pain when it comes to debugging? Would it be useful? Am I procrastinating?

---
Update: and it turns out this leads into a great discussion of extension methods. See
The Maybe Monad[^] and Chained null checks and the Maybe monad[^] for two ways of achieving this. Once you've done that, debate the correctness of extension methods that are able by design to operate on a null references.

I will be over there looking for new, shiny, distracting things.
cheers,
Chris Maunder

The Code Project | Co-founder
Microsoft C++ MVP


modified 10-Jan-13 16:48pm.

GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Dalek Dave10-Jan-13 4:00
memberDalek Dave10-Jan-13 4:00 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Chris Maunder10-Jan-13 4:07
adminChris Maunder10-Jan-13 4:07 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Norm .net10-Jan-13 4:14
groupNorm .net10-Jan-13 4:14 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Shelby Robertson 10-Jan-13 4:41
member Shelby Robertson 10-Jan-13 4:41 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Paul Conrad10-Jan-13 6:06
memberPaul Conrad10-Jan-13 6:06 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Norm .net10-Jan-13 20:20
groupNorm .net10-Jan-13 20:20 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Dalek Dave10-Jan-13 4:18
memberDalek Dave10-Jan-13 4:18 
JokeRe: Method chaining with short-circuit parameter evaluation Pin
djj5510-Jan-13 4:34
memberdjj5510-Jan-13 4:34 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
PIEBALDconsult10-Jan-13 4:01
memberPIEBALDconsult10-Jan-13 4:01 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Maximilien10-Jan-13 4:03
memberMaximilien10-Jan-13 4:03 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
peterchen10-Jan-13 4:06
memberpeterchen10-Jan-13 4:06 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Chris Maunder10-Jan-13 4:08
adminChris Maunder10-Jan-13 4:08 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
peterchen10-Jan-13 4:20
memberpeterchen10-Jan-13 4:20 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Dalek Dave10-Jan-13 4:26
memberDalek Dave10-Jan-13 4:26 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Nagy Vilmos10-Jan-13 4:34
memberNagy Vilmos10-Jan-13 4:34 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Dalek Dave10-Jan-13 4:37
memberDalek Dave10-Jan-13 4:37 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Nagy Vilmos10-Jan-13 4:40
memberNagy Vilmos10-Jan-13 4:40 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
jibesh10-Jan-13 5:03
memberjibesh10-Jan-13 5:03 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
gavindon10-Jan-13 4:08
membergavindon10-Jan-13 4:08 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Espen Harlinn10-Jan-13 4:11
mvpEspen Harlinn10-Jan-13 4:11 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Eddy Vluggen10-Jan-13 4:53
mvpEddy Vluggen10-Jan-13 4:53 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Jörgen Andersson10-Jan-13 8:42
memberJörgen Andersson10-Jan-13 8:42 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Ranjan.D10-Jan-13 5:01
memberRanjan.D10-Jan-13 5:01 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Dave Kreskowiak10-Jan-13 4:13
mvpDave Kreskowiak10-Jan-13 4:13 
GeneralThere is a cool pattern Pin
Ennis Ray Lynch, Jr.10-Jan-13 4:22
memberEnnis Ray Lynch, Jr.10-Jan-13 4:22 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Pete O'Hanlon10-Jan-13 4:43
protectorPete O'Hanlon10-Jan-13 4:43 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Chris Maunder10-Jan-13 10:53
adminChris Maunder10-Jan-13 10:53 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Pete O'Hanlon10-Jan-13 10:58
protectorPete O'Hanlon10-Jan-13 10:58 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
mark merrens10-Jan-13 4:54
membermark merrens10-Jan-13 4:54 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Roger Wright10-Jan-13 5:02
memberRoger Wright10-Jan-13 5:02 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Nemanja Trifunovic10-Jan-13 5:11
memberNemanja Trifunovic10-Jan-13 5:11 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Chris Maunder10-Jan-13 10:54
adminChris Maunder10-Jan-13 10:54 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
AspDotNetDev10-Jan-13 5:15
protectorAspDotNetDev10-Jan-13 5:15 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
szukuro10-Jan-13 5:21
memberszukuro10-Jan-13 5:21 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
szukuro10-Jan-13 5:18
memberszukuro10-Jan-13 5:18 
GeneralRe: Method chaining with short-circuit parameter evaluation Pin
Zac Greve10-Jan-13 5:41
memberZac Greve10-Jan-13 5:41 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web02 | 2.8.160721.1 | Last Updated 23 Jul 2016
Copyright © CodeProject, 1999-2016
All Rights Reserved. Terms of Service
Layout: fixed | fluid