It depends on the complexity of the case. I'd definitely avoid the second condition because debugging nested ternary's is an absolute nightmare. In a more complex case than this though, I'd drop both constructs in favour of an Action or Func. Have a look at the Log class in my article here[^] to see how it works.
The basic approach is to set up a set of Actions (or Funcs) that correspond to the operations in your switch statement and assign them to a dictionary (the key in the dictionary is the value for your switch statement). All you need do then is trigger the appropriate action based on the key. In the log sample, this line actually performs the validation:
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
clarity and readability are much more important than saving space on screen.
Which is why I posted - As the ?: was/is very clear to me, and I can at a glance understand what's going on, but I'm well aware it's not a construct used that/as often, so wanted to test the waters with other coders.
-debugging nested ternary's is an absolute nightmare
-I'll go for Switch because its easy to track errors in that.
As this is a *very* simple case I didn't even think of that actually.
But it might need to get more complicated as the code evolves.
Where I'm using it, it's not very likely though - But those are "famous last words", so point taken and agreed to.
Thank you all for the feed back - I'll tidy up my code now
As others said switch is more readable in this case. Also when switch has more labels, compilers use a lookup table (probably hash tables) to implement that and it will yield in accessing all the labels in constant time.
1) needing such a conversion often indicates a bad design e.g. a bad choice of data structuring;
2) and when unavoidable, i.e. when I do need to map characters to small positive integers, I use a snippet that is based on "literalString".IndexOf(char)
PS: at least two replies mentioned readability, which does not even appear (any more?) in the OP.
I hate it when the OP gets edited, and yes readability is very important.
Luc Pattyn I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages Local announcement (Antwerp region): Lange Wapper? 59.24% waren verstandig genoeg om NEEN te stemmen; bye bye viaduct.
I doubt that you can (correctly) deduce a regex from sample data. Take the phone-number column as an example, with this data;
What mask would the first three five's generate, and would that mask be reusable as a phone-number-mask?
It gets worse, since the generated mask isn't a phone-number-mask (even if you base it on the data in that column) - it will be a mask that allows all data within that column (since that's what it's based on).
The best approach would be to make a list of examples for each column, containing correct and incorrect values. Next, you base the regex on the domain of the values that you expect. Lastly, a unit-test to verify that the regex works
The mask is not only for a corporate sites, it is for the entire web.
if i specify to mask all the security No (SSN) in a page, even if i Google it also, i have to mask the SSN in the Google page as (XXXXXXXX). I have done that using ihtmlElementCollection (BHO). My problem is i know SSN format so there is no issue.But there can be any format, so just seeing one format dynamically i want to generate the regex. This question may be quiet meaningless, but we can could arrive a solution. if no one had come across like this, then i will try to generate a algorithm to achieve, but my thinking is, if already some one knows on that, then i don't want to wast my time to creating algorithm again.
But there can be any format, so just seeing one format dynamically i want to generate the regex.
Your application encounters the string "8572398947". Is that my SSN (being Dutch), or my SSN + 1, or just a random number? How would you know that the string is in fact, a SSN if you cannot verify that it is?
for example if i give :
email@example.com - we can make regular expression for all the mails,
So taking this example, you take that input and generate an "email address" regex from it. Now I try to enter my email address (which is .co.uk) and whoops, it fails. Yet mine is a totally valid email address.
There is absolutely no way you can make a regular expression from input data and have it work in all cases.