Convert.ToInt32
-
What do you expect? Convert.ToInt32(Int32) does nothing, you are trying to point it out as a joke, but its actually quite useful especially when you don't know the type that you are passing into it (which is why Convert has so many ToXXX overloads). Convert.ToDouble(Double) is the same, as well as Convert.ToSingle(Single), etc.
Hmm... totally missed this usage case, you're right. More often than not though, I use the Convert class to convert objects where I do know what I'm passing in, so it just struck me as odd when I was browsing documentation. I feel like they could have mentioned this in the remarks rather than a 'nothing happened' remark.
-
Hmm... totally missed this usage case, you're right. More often than not though, I use the Convert class to convert objects where I do know what I'm passing in, so it just struck me as odd when I was browsing documentation. I feel like they could have mentioned this in the remarks rather than a 'nothing happened' remark.
There are even more usage scenarios than that, take for example the following code:
public void SomeDummyMethod(int myNumber)
{
double myDouble = Convert.ToDouble(myNumber);return myDouble \* 1000.1f;
}
Now, lets say later down the line you get somebody who says "wait, myNumber needs to be a signed byte!"... Well now you only have to change one line of code:
public void SomeDummyMethod(SByte myNumber)
{
double myDouble = Convert.ToDouble(myNumber);return myDouble \* 1000.1f;
}
Then later somebody comes around and says, "no, it should be a double to begin with"...
public void SomeDummyMethod(double myNumber)
{
double myDouble = Convert.ToDouble(myNumber);return myDouble \* 1000.1f;
}
This is an overly simplified case obviously, but imagine if there were 100 or 200 lines of code in the function, if they didn't have Convert.ToDouble(double) the one change at the top would break unknown lines of code below. Plus, the design strategy for the class was Convert should convert from any numeric type any other numeric type. Oddly enough that also means converting from something back to itself... On top of all that, it really helps support the IConvertable [^]interface later on, and even says in the documentation: "The common language runtime typically exposes the IConvertible interface through the Convert class. The common language runtime also uses the IConvertible interface internally, in explicit interface implementations, to simplify the code used to support conversions in the Convert class and basic common language runtime types." So much more useful than you think :)
-
Hmm... totally missed this usage case, you're right. More often than not though, I use the Convert class to convert objects where I do know what I'm passing in, so it just struck me as odd when I was browsing documentation. I feel like they could have mentioned this in the remarks rather than a 'nothing happened' remark.
Best to avoid the Convert class generally; the only useful member is ChangeType.
-
There are even more usage scenarios than that, take for example the following code:
public void SomeDummyMethod(int myNumber)
{
double myDouble = Convert.ToDouble(myNumber);return myDouble \* 1000.1f;
}
Now, lets say later down the line you get somebody who says "wait, myNumber needs to be a signed byte!"... Well now you only have to change one line of code:
public void SomeDummyMethod(SByte myNumber)
{
double myDouble = Convert.ToDouble(myNumber);return myDouble \* 1000.1f;
}
Then later somebody comes around and says, "no, it should be a double to begin with"...
public void SomeDummyMethod(double myNumber)
{
double myDouble = Convert.ToDouble(myNumber);return myDouble \* 1000.1f;
}
This is an overly simplified case obviously, but imagine if there were 100 or 200 lines of code in the function, if they didn't have Convert.ToDouble(double) the one change at the top would break unknown lines of code below. Plus, the design strategy for the class was Convert should convert from any numeric type any other numeric type. Oddly enough that also means converting from something back to itself... On top of all that, it really helps support the IConvertable [^]interface later on, and even says in the documentation: "The common language runtime typically exposes the IConvertible interface through the Convert class. The common language runtime also uses the IConvertible interface internally, in explicit interface implementations, to simplify the code used to support conversions in the Convert class and basic common language runtime types." So much more useful than you think :)
-
public void SomeDummyMethod(double myNumber)
{
double myDouble = Convert.ToDouble(myNumber);return myDouble \* 1000.1f;
}
And after few months someone finds this code and posts it to Weird and Wonderful. ;P
-
There are even more usage scenarios than that, take for example the following code:
public void SomeDummyMethod(int myNumber)
{
double myDouble = Convert.ToDouble(myNumber);return myDouble \* 1000.1f;
}
Now, lets say later down the line you get somebody who says "wait, myNumber needs to be a signed byte!"... Well now you only have to change one line of code:
public void SomeDummyMethod(SByte myNumber)
{
double myDouble = Convert.ToDouble(myNumber);return myDouble \* 1000.1f;
}
Then later somebody comes around and says, "no, it should be a double to begin with"...
public void SomeDummyMethod(double myNumber)
{
double myDouble = Convert.ToDouble(myNumber);return myDouble \* 1000.1f;
}
This is an overly simplified case obviously, but imagine if there were 100 or 200 lines of code in the function, if they didn't have Convert.ToDouble(double) the one change at the top would break unknown lines of code below. Plus, the design strategy for the class was Convert should convert from any numeric type any other numeric type. Oddly enough that also means converting from something back to itself... On top of all that, it really helps support the IConvertable [^]interface later on, and even says in the documentation: "The common language runtime typically exposes the IConvertible interface through the Convert class. The common language runtime also uses the IConvertible interface internally, in explicit interface implementations, to simplify the code used to support conversions in the Convert class and basic common language runtime types." So much more useful than you think :)
Ron Beyer wrote:
public void SomeDummyMethod(int myNumber) { double myDouble = Convert.ToDouble(myNumber); return myDouble * 1000.1f; }
Apart from the fact that you can't
return
a value from avoid
method, why are you multiplying adouble
by afloat
constant? ;P
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
-
Ron Beyer wrote:
public void SomeDummyMethod(int myNumber) { double myDouble = Convert.ToDouble(myNumber); return myDouble * 1000.1f; }
Apart from the fact that you can't
return
a value from avoid
method, why are you multiplying adouble
by afloat
constant? ;P
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
He doesn't want it to sink without trace...
-
Quote:
Returns the specified 32-bit signed integer; no actual conversion is performed.
Most useful method evar....
By M$ logic the point of using that kind of "useful" methods is when you call Convert.ToInt32 with object, dynamic or var variable you will always get Int32 as a result. P.S. Today i found one more reason to dislike c#. Who the hell had the brilliant idea to make Tuples read only ? And why the elephant ?
Microsoft ... the only place where VARIANT_TRUE != true
-
By M$ logic the point of using that kind of "useful" methods is when you call Convert.ToInt32 with object, dynamic or var variable you will always get Int32 as a result. P.S. Today i found one more reason to dislike c#. Who the hell had the brilliant idea to make Tuples read only ? And why the elephant ?
Microsoft ... the only place where VARIANT_TRUE != true
Argonia wrote:
Who the hell had the brilliant idea to make Tuples read only ? And why the elephant ?
The design of the
System.Tuple
classes is more to do with the BCL team than the C# team. Any .NET language which uses these classes will get the same read-only behaviour. And they're read-only because they originated in functional programming, where pretty much everything is immutable.
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
-
By M$ logic the point of using that kind of "useful" methods is when you call Convert.ToInt32 with object, dynamic or var variable you will always get Int32 as a result. P.S. Today i found one more reason to dislike c#. Who the hell had the brilliant idea to make Tuples read only ? And why the elephant ?
Microsoft ... the only place where VARIANT_TRUE != true
Actually, tuples largely come from functional languages where everything is immutable. There are all sorts of benefits - for example immutable objects are guaranteed to be thread-safe, are simpler to reason about, and offer higher security than mutable objects. Also, importantly, if they were mutable, by definition they wouldn't be tuples. If you want a mutable, ordered collection of elements, write one and call it something else! Wikiepdia has a good entry on immutable objects[^].
"If you don't fail at least 90 percent of the time, you're not aiming high enough." Alan Kay.
-
What do you expect? Convert.ToInt32(Int32) does nothing, you are trying to point it out as a joke, but its actually quite useful especially when you don't know the type that you are passing into it (which is why Convert has so many ToXXX overloads). Convert.ToDouble(Double) is the same, as well as Convert.ToSingle(Single), etc.
Ron Beyer wrote:
Convert.ToInt32(Int32) does nothing
but to throw exceptions... Prefer Int32.TryParse instead.
Vasudevan Deepak Kumar Personal Homepage You can not step into the same river twice.
-
By M$ logic the point of using that kind of "useful" methods is when you call Convert.ToInt32 with object, dynamic or var variable you will always get Int32 as a result. P.S. Today i found one more reason to dislike c#. Who the hell had the brilliant idea to make Tuples read only ? And why the elephant ?
Microsoft ... the only place where VARIANT_TRUE != true
Take no offense, but you don't know what you're talking about, don't you? Mutable Tuples are called lists and/or classes. Having Tuples is great if you need to have a Dictionary which happens to need two keys: you don't need a custom class or some other custom solution, you just use the tuple as key. Mutable data means the hash will change, so you cannot. Read Immutable as hashable. It really makes a LOT of sense to have tuples. You just have to learn why they are there in the first place and you'll discover that the .NET Framework is one of the best around. And IMO the best, period. My 2 c: Convert is a fossil from 1.0/1.1 era. Never used it since generics went out.
-
Take no offense, but you don't know what you're talking about, don't you? Mutable Tuples are called lists and/or classes. Having Tuples is great if you need to have a Dictionary which happens to need two keys: you don't need a custom class or some other custom solution, you just use the tuple as key. Mutable data means the hash will change, so you cannot. Read Immutable as hashable. It really makes a LOT of sense to have tuples. You just have to learn why they are there in the first place and you'll discover that the .NET Framework is one of the best around. And IMO the best, period. My 2 c: Convert is a fossil from 1.0/1.1 era. Never used it since generics went out.
Actually i do, So basically i was looking for a way to make a vector with a pair of strings. After some google ing i found about list with Tuples. It was fun when i decided that this list must me modified. After few hours later i found about KeyValuePair. And btw everything what M$ sux including c#.
Microsoft ... the only place where VARIANT_TRUE != true
-
Actually i do, So basically i was looking for a way to make a vector with a pair of strings. After some google ing i found about list with Tuples. It was fun when i decided that this list must me modified. After few hours later i found about KeyValuePair. And btw everything what M$ sux including c#.
Microsoft ... the only place where VARIANT_TRUE != true
So you're telling me you needed a screwdriver, but you don't know what a screwdriver is. So you googled for it and picked up a drill. Then you found out that it didn't worked to do the job you need. And you blame Microsoft for this. I suggest you could read "The Pragmatic Programmer". Look, I'm not a MS fan boy, I think many libraries MS is pushing (or where pushing) are crap. But there is a core of consistency and completeness in the .NET framework that I never found out in other core libraries. And an elegance in C# that is unknown to Java. If you don't agree, tell me a better language to do the same kind of stuff you can do in C#. Currently, you seem to bash M$ just for the sake of your incompetency (literally: you're not competent regarding the job you do). I love Python (but it's library is light years lagging on naming conventions), I enjoy JavaScript (but you must know what works and what will break your programs), but the building of the .NET Framework is a major accomplishment.
-
So you're telling me you needed a screwdriver, but you don't know what a screwdriver is. So you googled for it and picked up a drill. Then you found out that it didn't worked to do the job you need. And you blame Microsoft for this. I suggest you could read "The Pragmatic Programmer". Look, I'm not a MS fan boy, I think many libraries MS is pushing (or where pushing) are crap. But there is a core of consistency and completeness in the .NET framework that I never found out in other core libraries. And an elegance in C# that is unknown to Java. If you don't agree, tell me a better language to do the same kind of stuff you can do in C#. Currently, you seem to bash M$ just for the sake of your incompetency (literally: you're not competent regarding the job you do). I love Python (but it's library is light years lagging on naming conventions), I enjoy JavaScript (but you must know what works and what will break your programs), but the building of the .NET Framework is a major accomplishment.
Oh, and BTW KeyValuePair is not a vector. It's only a Dictionary item. You could use it to store two strings, but you probably would be better set implementing a class with two members, x and y.
-
So you're telling me you needed a screwdriver, but you don't know what a screwdriver is. So you googled for it and picked up a drill. Then you found out that it didn't worked to do the job you need. And you blame Microsoft for this. I suggest you could read "The Pragmatic Programmer". Look, I'm not a MS fan boy, I think many libraries MS is pushing (or where pushing) are crap. But there is a core of consistency and completeness in the .NET framework that I never found out in other core libraries. And an elegance in C# that is unknown to Java. If you don't agree, tell me a better language to do the same kind of stuff you can do in C#. Currently, you seem to bash M$ just for the sake of your incompetency (literally: you're not competent regarding the job you do). I love Python (but it's library is light years lagging on naming conventions), I enjoy JavaScript (but you must know what works and what will break your programs), but the building of the .NET Framework is a major accomplishment.
robocodeboy wrote:
And an elegance in C# that is unknown to Java.
You are mistaken c# doesn't have any elegance. The elegance you see is only part of the beauties of c and c++. But ofcouse M$ decided that not all is needed and they decided to leave some things (templates, pointers, friend, and so on) and call it a new language because they added few libraries.
Microsoft ... the only place where VARIANT_TRUE != true
-
Oh, and BTW KeyValuePair is not a vector. It's only a Dictionary item. You could use it to store two strings, but you probably would be better set implementing a class with two members, x and y.
My point was that i needed List> somesh*t = new List>(); for my vector. There is a Pair structure defined in System.Web.UI.Pair namespace. Who the hell does that. Define the same thing under different name in different namespace, oh, wait M$ Now you have 3 things for pair -Tuple - up to 7 items cuz you never know if the programmer can make 7 items list with Pair alone -KeyValuePair -Pair When the last 2 are basically the same.
Microsoft ... the only place where VARIANT_TRUE != true
-
robocodeboy wrote:
And an elegance in C# that is unknown to Java.
You are mistaken c# doesn't have any elegance. The elegance you see is only part of the beauties of c and c++. But ofcouse M$ decided that not all is needed and they decided to leave some things (templates, pointers, friend, and so on) and call it a new language because they added few libraries.
Microsoft ... the only place where VARIANT_TRUE != true
Yes, of course. C++ is so elegant that his grammar is undecidable, and no IDE in the world can give you a decent code completion. But maybe you're Klingon and you remember variable names by heart. C is elegant, yes. Just as an haiku. I completely enjoyed writing really quick, incomprehensible code that did simple stuff in clever ways, but designing UIs in C or C++ is an exercise in pain. Not mentioning organizing and building complex projects. C++ templates can do some clever stuff, but generics are pretty similar and less prone to breaking apart your build time. The only thing I miss in C# are mixins, but they are hard to manage even in C++. Pointers are in C# too, but you don't need to use them, usually. You can, but only if you have tight loops to be optimized. Friend is useless if you have internal members and friend assemblies. And private is considered more valuable than it is and not unit testable. Oh, and if "few libraries" means the single most extended library in existence yes, you are right. To one that makes this kind of statements, I can only suggest to (choose one in three): - RTFM and stop blaming others for what you get in the toolkit, instead of having to roll your own. - change language. Maybe the kind of stuff you're doing is not best suited for C# (I doubt, but...) - write your own language. You seem to be a world class language guru. Way better than that M$ scum. For sure you can tackle that task. A language is a tool, if you can't do stuff and blame the tool, either you change it or learn to use it. Blaming is easier (I remember people complaining about that stupid C compiler that was continually raising segmentation faults). Good luck!
-
My point was that i needed List> somesh*t = new List>(); for my vector. There is a Pair structure defined in System.Web.UI.Pair namespace. Who the hell does that. Define the same thing under different name in different namespace, oh, wait M$ Now you have 3 things for pair -Tuple - up to 7 items cuz you never know if the programmer can make 7 items list with Pair alone -KeyValuePair -Pair When the last 2 are basically the same.
Microsoft ... the only place where VARIANT_TRUE != true
There is no point in what you're saying. There wasn't before and for sure there isn't in this. What do you have to do with that data? It's an x and y coordinates (like a vector) or it's simply two strings? Why an array string[2] is not ok? What you need to accomplish? And why aren't you creating a simple, 5 lines class to do that? With 2 properties x and y? Do I have to explain you the difference between those 3? It seems you cannot read the documentation... Don't blame the language, blame the programmer. Stop whining and read a book.
-
There is no point in what you're saying. There wasn't before and for sure there isn't in this. What do you have to do with that data? It's an x and y coordinates (like a vector) or it's simply two strings? Why an array string[2] is not ok? What you need to accomplish? And why aren't you creating a simple, 5 lines class to do that? With 2 properties x and y? Do I have to explain you the difference between those 3? It seems you cannot read the documentation... Don't blame the language, blame the programmer. Stop whining and read a book.