Kurt Posted December 1, 2003 Posted December 1, 2003 I wonder why the .ToString() methode of line 20 failes.... Some more questions; 1/ Is a string actually a value type or a reference type? 2/ If a string is a value type, what is the default initial value for the strings of an array of strings that is instantiated ("", null or String.Empty???)? 3/ And what is the value of the Exception.HelpLink string when not specified? By the way, ToString() seems to work on String.Empty.... [CS] namespace Tests { using System; public class Test { public static void Main() { try { double a = 6; double b = 0; Console.WriteLine("{0} / {1} = {2}",a,b,Divide(a,b)); } catch (DivideByZeroException divByZero) { //the folowing line WORKS, HelpLink property is seen as "" (empty string) Console.WriteLine("Help on error: '{0}'\n\n",divByZero.HelpLink); //the folowing line THROWS AN EXCEPTION, WHY ???? Console.WriteLine("Help on error: '{0}'\n\n",divByZero.HelpLink.ToString()); } } public static double Divide(double a, double b) { if (b == 0) { DivideByZeroException e = new DivideByZeroException("Argument b was 0 in DoDivision (dividing by zero)"); //folowing line is commented to see what the HelpLink property contains by default.... //e.HelpLink = "More about dividing by zero..."; throw e; } return a/b; } } } [/CS] Quote qrt
Leaders dynamic_sysop Posted December 2, 2003 Leaders Posted December 2, 2003 if divByZero.HelpLink is empty ( ie: "" ) , you cant use ToString() because you can't convert " Nothing " to a String , there needs to be a value there. But by the look of it , divByZero.HelpLink is a string based result anyway , so it shouldnt need ToString() on the end of it. Quote
Kurt Posted December 2, 2003 Author Posted December 2, 2003 It shouldn't need it, but an exception shouldn't be thrown either when ToString() is called - a methode overritten by the String class, no harm to call it - and this while... System.Console.WriteLine(System.String.Empty.ToString()); doesn't throw any exceptions. ps: 1/ Is a string actually a value type or a reference type?I know that strings are immutable, and so act like value types when passed to a methode. On the other hand however, System.String doesn't inherit from System.ValueType as value types seem to do... some more info is very welcome.... Quote qrt
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.