Boolean.TryParse引出的问题

今天项目中要用到为某个bool值属性设置默认值为true的功能,在项目中我是这样写的

  1.         /// <summary>
  2.         /// 是否改变地图鼠标样式
  3.         /// </summary>
  4.         [DefaultValue(true)]
  5.         public bool IsChangeCursor
  6.         {
  7.             get
  8.             {
  9.                 string debug = string.Format("{0}", ViewState["IsChangeCursor"]);
  10.                 bool result = true;
  11.                 if (Boolean.TryParse(debug, out result))
  12.                 {
  13.                     return result;
  14.                 }
  15.                 return result;
  16.             }
  17.             set
  18.             {
  19.                 ViewState["IsChangeCursor"] = value;
  20.             }
  21.         }

 

 结果取出来的属性总是false???
通过Reflctor查了下Boolean.TryParse方法发现在一开始为result初始化为false了:


 

  1. public static bool TryParse(string value, out bool result)
  2.     {
  3.         result = false;
  4.         if (value != null)
  5.         {
  6.             if ("True".Equals(value, StringComparison.OrdinalIgnoreCase))
  7.             {
  8.                 result = true;
  9.                 return true;
  10.             }
  11.             if ("False".Equals(value, StringComparison.OrdinalIgnoreCase))
  12.             {
  13.                 result = false;
  14.                 return true;
  15.             }
  16.             if (m_trimmableChars == null)
  17.             {
  18.                 char[] destinationArray = new char[string.WhitespaceChars.Length + 1];
  19.                 Array.Copy(string.WhitespaceChars, destinationArray, string.WhitespaceChars.Length);
  20.                 destinationArray[destinationArray.Length - 1] = '/0';
  21.                 m_trimmableChars = destinationArray;
  22.             }
  23.             value = value.Trim(m_trimmableChars);
  24.             if ("True".Equals(value, StringComparison.OrdinalIgnoreCase))
  25.             {
  26.                 result = true;
  27.                 return true;
  28.             }
  29.             if ("False".Equals(value, StringComparison.OrdinalIgnoreCase))
  30.             {
  31.                 result = false;
  32.                 return true;
  33.             }
  34.         }
  35.         return false;
  36.     }

所以在未给IsChangeCursor设置为true时取到的值总为false


 

  1.         /// <summary>
  2.         /// 是否改变地图鼠标样式
  3.         /// </summary>
  4.         [DefaultValue(true)]
  5.         public bool IsChangeCursor
  6.         {
  7.             get
  8.             {
  9.                 string debug = string.Format("{0}", ViewState["IsChangeCursor"]);
  10.                 bool result = true;
  11.                 if (Boolean.TryParse(debug, out result))
  12.                 {
  13.                     return result;
  14.                 }
  15.                 return true;//改为默认返回true
  16.             }
  17.             set
  18.             {
  19.                 ViewState["IsChangeCursor"] = value;
  20.             }
  21.         }

你可能感兴趣的:(null)