|
SpacixOne wrote: Just so you know, unless you are interacting normal types with nullable types the ?? operator isn't worth much. It doesn't surprise me if you've never seen it before. It is one of those things that you won't know until you need it.
I suspect this comment was addressed at Greeg. Perhaps it should be put there.
SpacixOne wrote: I think it's clear as anything else, I mean this operator is in most any C-style language: C#, Java, JavaScript, PHP, Ruby, Verilog, and others..
The problem with the ternary operator is once you start using it, it's just so easy to overuse. I've seen code that has ternary operators nested inside ternary operators - all because somebody couldn't be bothered to type a couple of if/else statements in. Plus - newbies don't tend to know what it means.
|
|
|
|
|
Hi Pete,
there has been a horror thread not so long ago on the redundancy of myBool ? true : false
which just equals myBool
and IMO the other one does not compile, I expect ?? needs references, but your example
starts with int
Hence I must conclude the geordie beer has taken its toll.
After a good night sleep the force may be back though.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
OK - I was trying to put in a simple example for the ternary operator. I'm one of the haters of myBool ..., but it was such a trivial example that it didn't seem an issue here - oh well.
Luc Pattyn wrote: and IMO the other one does not compile, I expect ?? needs references, but your example
starts with int
Errm. It will compile - the ?? tells the compiler to fall through from the first value (if it's null) to the second one. Here's an example:
int? myValue = 2;
int itemVal = myValue ?? 10; The force is still strong with this one youngling.
|
|
|
|
|
Aha, the int? comes to the rescue.
I never got used to nullable types, I lived too long without them.
So I do like the ?? operator but the only usage I have for it is with references,
as in object obj=myObject??myDefaultObject;
I stand corrected by a true jedi
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Luc,
I'd like to know where you've come into the need of nullable types in C# other working with than ADO.NET of course
|
|
|
|
|
huh?
I just said I never got used to them since most of the time they have
not been available; we can live without, easily.
And I don't exactly like the extra code they generate nor the extra data memory
they cause either.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Oh I took it that you're not used to them yet because, well you are using them. My mistake then :/
|
|
|
|
|
Luc Pattyn wrote: I stand corrected by a true jedi
Strong in the force is the young one.
|
|
|
|
|
strung in the farce is the young one
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
There are 2. One is a conditional operation and the other is a Null-Coalescing operator.
1) Conditional
result = condition ? truepart : falsepart;
if(condition) result = truepart;
else result = falsepart;
2 Coalescing (evaluate b if a is null)
c = a ?? b
if(a == null) c = b;
else c = a;
*and the nullable type* Thanks Pete
Scott P
"Run for your life from any man who tells you that money is evil. That sentence is the leper's bell of an approaching looter." --Ayn Rand
|
|
|
|
|
carbon_golem wrote: There are 2. One is a conditional operation and the other is a Null-Coalescing operator.
What about setting a nullable variable? BTW - the conditional is called the ternary operator.
|
|
|
|
|
I guess that's what I get, I forgot to take my umm... what's it called... that stuff that makes you remember better? darn it.
Thanks for the correction.
"Run for your life from any man who tells you that money is evil. That sentence is the leper's bell of an approaching looter." --Ayn Rand
|
|
|
|
|
|
Pete O'Hanlon wrote: BTW - the conditional is called the ternary operator.
Which BTW is quite a silly name, as it only means "three operand operator", and doesn't say anything at all what the operator does with the operands.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
hy everyone!
i was wondering if there is a default string function to cut a string if it is to long to e.g. insert it into a textfield.
what i want to do:
i created a table which allows strings up to a maximum length. if it is too long i have to cut the rest.
lets say there is a string
"1,2,3,4,5,6,7,8,9,10" but the maximum length, which could be insert is 16 characters so the maximum string would be e.g. "1,2,3,4,5,6,7,8," but is there a chance to cut it to this length without having to parse it or without having to insert 16 characters one by one in a loop?
thanks.
stephan.
|
|
|
|
|
string s = "1,2,3,4,5,6,7,8,9,10";
string cut = s.Substring(0, 16);
so:
s = "1,2,3,4,5,6,7,8,9,10";
cut = "1,2,3,4,5,6,7,8,";
|
|
|
|
|
It would be best to check the length before trying to substring that... I don't think anyone likes argument out of range exceptions....
|
|
|
|
|
thanks for the hints. i guess the best solution will be
if (mystring.length > maximumlength)
{
mystring = mystring.Substring(0, maximumlength);
}
so if the string is already smaller than the maximum length, then it is easy to insert it, but if it is longer, then just the first characters (up to maximumlength) should be insert.
thanks again for the hints. i didn't know it was this easy
stephan.
|
|
|
|
|
good morning from montreal,
i am working with a TURBO C 2.01 compiler -
with which i am still very satified - but i can't find anywhere a good
article how to incorperate ASSEMBLY language with this compiler. that's
really all for now. of course if someone could show me a SIMPLE code
fragment, from way back when, that's really all i,d like. So thanks
beforhand. allan.
|
|
|
|
|
you asked in the wrong forum.
this forum is about C#, a rather recent language, quite different from good old C.
I suggest you ask again in the C/C++ forum (unmanaged, no CLI), but even then don't
hold your breath...
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
It's been a really long time, but I think Borland used the following:
single line:
asm mov ah, 9
or a block:
asm
{
mov ax, 1234h
mov bx, ax
}
Hope that works. I think you can also link in your ASM files but that part of my brain has been overwritten.
|
|
|
|
|
I get an InvalidCastException in the bold part of the code (the "" and /object are not part of the code)
public void AthugaStafset()
{
SortedList SL = new SortedList();
SortedList SL2 = new SortedList();
SL.Add(0, "V1");
SL.Add(1, "V2");
SL.Add(2, "V3");
SL.Add(3, "V4");
SL.Add(4, "V5");
SL2.Add(0, richTextBox1.Text);
SL2.Add(1, richTextBox1.Text);
SL2.Add(2, richTextBox1.Text);
SL2.Add(3, richTextBox1.Text);
SL2.Add(4, richTextBox1.Text);
bool equal = Compare(SL, SL2);
if (equal)
{
richTextBox2.Text = "Right";
}
else
{
richTextBox2.Text = "They differ";
}
}
static bool Compare(SortedList SL, SortedList SL2)
{
if (SL.Count != SL2.Count)
{
return false;
}
foreach (KeyValuePair<object, string=""> item in SL)
{
if (!SL.Contains(item.Key))
{
// Return the moment we find a difference
return false;
}
}
// Must be the same
return true;
}
|
|
|
|
|
Change KeyValuePair<> to DictionaryEntry.
Remember to use the "code" and "pre" tags when posting code.
Scott P
"Run for your life from any man who tells you that money is evil. That sentence is the leper's bell of an approaching looter." --Ayn Rand
|
|
|
|
|
That worked, but now everything is equal or correct, even if I type in a wrong string.
|
|
|
|
|
I was waiting for you to get to that. You are comparing the Keys to both lists, not the Values. And the Keys in both lists are identical. Your compare function needs work.
Scott P
"Run for your life from any man who tells you that money is evil. That sentence is the leper's bell of an approaching looter." --Ayn Rand
|
|
|
|
|