Click here to Skip to main content
15,895,823 members
Home / Discussions / C#
   

C#

 
GeneralRe: C# versus C++, null references and protecting against them Pin
Chuck O'Toole15-Jan-11 20:56
Chuck O'Toole15-Jan-11 20:56 
GeneralRe: C# versus C++, null references and protecting against them Pin
bob1697216-Jan-11 5:24
bob1697216-Jan-11 5:24 
GeneralRe: C# versus C++, null references and protecting against them Pin
Chuck O'Toole16-Jan-11 6:00
Chuck O'Toole16-Jan-11 6:00 
GeneralRe: C# versus C++, null references and protecting against them Pin
Paul Michalik16-Jan-11 7:39
Paul Michalik16-Jan-11 7:39 
GeneralRe: C# versus C++, null references and protecting against them Pin
Chuck O'Toole16-Jan-11 7:57
Chuck O'Toole16-Jan-11 7:57 
GeneralRe: C# versus C++, null references and protecting against them Pin
Chuck O'Toole16-Jan-11 8:30
Chuck O'Toole16-Jan-11 8:30 
GeneralRe: C# versus C++, null references and protecting against them Pin
bob1697216-Jan-11 12:29
bob1697216-Jan-11 12:29 
GeneralRe: C# versus C++, null references and protecting against them Pin
Paul Michalik16-Jan-11 20:35
Paul Michalik16-Jan-11 20:35 
Hm, not sure to whom this may concern, I always get confused by these hierarchies of threads... Anyway, the concept of a C++ reference is a subtle thing and it got even subtler with c++0x, as you might know. For good reasons this concept wasn't considered is what C# and other CLR targeting languages - and now we're back at OP's problem (at least as I see it...): in case of reference types (and in a verifiable program), you always deal with handles ("pointers") to instances. These handles can have two states: (a) pointing to valid object, (b) or "null". You can take a value of a "handle" by reference, by stating this intent explicitely at both call and target sites. However, this does not change the semantics of a handle, you just get access to the location of whatever the handle represents. So in C#, if you want to protect against handle pointing to "null", you either have to be explicit about that (code contracts are a great way to do that), or you rely on NullArgumentException handling (which is guaranteed to be thrown by the specs). The ref modifier mentioned somewhere in the thread does not help much:

void Bar(MyClass pParam) {
    pParam.Member(); // guaranteed NullArgument exception if null
}

void Bar(ref MyClass pParam) {
    pParam.Member(); // guaranteed NullArgument exception if null   
    pParam = new MyClass();
}

void Foo() {
    MyClass tI1;
    MyClass tI2 = null;
    MyClass tI3 = new MyClass();

    Bar(ref tI1); // error, tI1 uninitialized
    Bar(ref tI2); // ok
    Bar(ref tI3); // ok

    Bar(tI1); // warning or error, not sure
    Bar(tI2); // NullArgumentEx...
    Bar(tI3); // ok
}

GeneralRe: C# versus C++, null references and protecting against them Pin
Paul Michalik15-Jan-11 23:04
Paul Michalik15-Jan-11 23:04 
GeneralRe: C# versus C++, null references and protecting against them Pin
bob1697216-Jan-11 4:57
bob1697216-Jan-11 4:57 
QuestionCOM error [modified] Pin
polycom12314-Jan-11 8:05
polycom12314-Jan-11 8:05 
QuestionDynamic assembly information Pin
Helfdane14-Jan-11 2:32
Helfdane14-Jan-11 2:32 
AnswerRe: Dynamic assembly information Pin
Ravi Sant14-Jan-11 3:49
Ravi Sant14-Jan-11 3:49 
GeneralRe: Dynamic assembly information Pin
Helfdane16-Jan-11 21:05
Helfdane16-Jan-11 21:05 
AnswerRe: Dynamic assembly information Pin
PIEBALDconsult15-Jan-11 9:08
mvePIEBALDconsult15-Jan-11 9:08 
GeneralRe: Dynamic assembly information Pin
Tony Richards16-Jan-11 8:54
Tony Richards16-Jan-11 8:54 
GeneralRe: Dynamic assembly information Pin
PIEBALDconsult16-Jan-11 14:49
mvePIEBALDconsult16-Jan-11 14:49 
QuestionRunning an exe file ( I mean a program) from inside my own program Pin
Fred 3414-Jan-11 1:41
Fred 3414-Jan-11 1:41 
AnswerRe: Running an exe file ( I mean a program) from inside my own program Pin
PIEBALDconsult14-Jan-11 1:46
mvePIEBALDconsult14-Jan-11 1:46 
AnswerRe: Running an exe file ( I mean a program) from inside my own program PinPopular
Luc Pattyn14-Jan-11 1:48
sitebuilderLuc Pattyn14-Jan-11 1:48 
GeneralRe: Running an exe file ( I mean a program) from inside my own program Pin
Fred 3414-Jan-11 2:00
Fred 3414-Jan-11 2:00 
GeneralRe: Running an exe file ( I mean a program) from inside my own program Pin
Dave Kreskowiak14-Jan-11 4:07
mveDave Kreskowiak14-Jan-11 4:07 
AnswerRe: Running an exe file ( I mean a program) from inside my own program PinPopular
JF201514-Jan-11 2:00
JF201514-Jan-11 2:00 
QuestionWhich is the best way to shutdown, reboot, or logoff from the system in C# (.NEt 4.0)? Pin
Erik14-Jan-11 0:16
Erik14-Jan-11 0:16 
AnswerRe: Which is the best way to shutdown, reboot, or logoff from the system in C# (.NEt 4.0)? Pin
Luc Pattyn14-Jan-11 0:33
sitebuilderLuc Pattyn14-Jan-11 0:33 

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.