Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查表示点结构的字符串变量?_C#_Point_Formatexception - Fatal编程技术网

C# 如何检查表示点结构的字符串变量?

C# 如何检查表示点结构的字符串变量?,c#,point,formatexception,C#,Point,Formatexception,Point.Parse(“SomeText”) 如何检查给定的字符串是否表示一个点 Parse Method Documentation是如果您实际阅读文档,您将看到Point.Parse()在三种情况下引发异常: 源不是由两个逗号或空格分隔的双精度值组成 源不包含两个数字 源包含太多分隔符 因此,您必须: 确保您的输入代表一个点,并且不要将虚假信息传递给该方法。我们不知道你的意见来自哪里,所以这取决于你 验证输入,例如使用正则表达式。这可能比不验证对性能的危害更大,但这取决于输入以及输入

Point.Parse(“SomeText”)

如何检查给定的字符串是否表示一个点


Parse Method Documentation是如果您实际阅读文档,您将看到
Point.Parse()在三种情况下引发异常:

  • 源不是由两个逗号或空格分隔的双精度值组成
  • 源不包含两个数字
  • 源包含太多分隔符
因此,您必须:

  • 确保您的输入代表一个点,并且不要将虚假信息传递给该方法。我们不知道你的意见来自哪里,所以这取决于你
  • 验证输入,例如使用正则表达式。这可能比不验证对性能的危害更大,但这取决于输入以及输入实际上不代表点的频率
  • 您可以自己解析每个字符串,例如使用
    string.IndexOf()
    string.Substring()
    (或
    RegEx.Match()
    )和
    double.TryParse()
    ,但您基本上是在重建
    Point.Parse()
    ,并且可以更好地返回
    新点{X=parsedX,Y=parsedY}

如果您确实阅读了文档,您将看到
Point.Parse()在三种情况下引发异常:

  • 源不是由两个逗号或空格分隔的双精度值组成
  • 源不包含两个数字
  • 源包含太多分隔符
因此,您必须:

  • 确保您的输入代表一个点,并且不要将虚假信息传递给该方法。我们不知道你的意见来自哪里,所以这取决于你
  • 验证输入,例如使用正则表达式。这可能比不验证对性能的危害更大,但这取决于输入以及输入实际上不代表点的频率
  • 您可以自己解析每个字符串,例如使用
    string.IndexOf()
    string.Substring()
    (或
    RegEx.Match()
    )和
    double.TryParse()
    ,但您基本上是在重建
    Point.Parse()
    ,并且可以更好地返回
    新点{X=parsedX,Y=parsedY}

如果您确实阅读了文档,您将看到
Point.Parse()在三种情况下引发异常:

  • 源不是由两个逗号或空格分隔的双精度值组成
  • 源不包含两个数字
  • 源包含太多分隔符
因此,您必须:

  • 确保您的输入代表一个点,并且不要将虚假信息传递给该方法。我们不知道你的意见来自哪里,所以这取决于你
  • 验证输入,例如使用正则表达式。这可能比不验证对性能的危害更大,但这取决于输入以及输入实际上不代表点的频率
  • 您可以自己解析每个字符串,例如使用
    string.IndexOf()
    string.Substring()
    (或
    RegEx.Match()
    )和
    double.TryParse()
    ,但您基本上是在重建
    Point.Parse()
    ,并且可以更好地返回
    新点{X=parsedX,Y=parsedY}

如果您确实阅读了文档,您将看到
Point.Parse()在三种情况下引发异常:

  • 源不是由两个逗号或空格分隔的双精度值组成
  • 源不包含两个数字
  • 源包含太多分隔符
因此,您必须:

  • 确保您的输入代表一个点,并且不要将虚假信息传递给该方法。我们不知道你的意见来自哪里,所以这取决于你
  • 验证输入,例如使用正则表达式。这可能比不验证对性能的危害更大,但这取决于输入以及输入实际上不代表点的频率
  • 您可以自己解析每个字符串,例如使用
    string.IndexOf()
    string.Substring()
    (或
    RegEx.Match()
    )和
    double.TryParse()
    ,但您基本上是在重建
    Point.Parse()
    ,并且可以更好地返回
    新点{X=parsedX,Y=parsedY}

    • 实现这一点的最快、可能也是最干净的方法是为
      点实现自己的
      TryParse
      方法。Parse

          public bool TryParse(string source, out Point point)
          {
              try
              {
                  point = Point.Parse(source);
              }
              catch (FormatException ex)
              {
                  point = default(Point);
                  return false;
              }
      
              return true;
          }
      
      您可以这样消费:

              Point point;
              if (!TryParse("12, 13", out point))
              {
                  // We have an invalid Point!
              }
      
      如果字符串不是有效点,该方法将返回false,您可以立即执行任何需要执行的操作。如果解析成功,
      out
      参数将包含解析的
      ,否则将包含
      的默认值,该值可能为(0,0)


      请注意,异常在这里被禁止,但这不会给您带来任何麻烦。如果需要,您可以在设置
      点后重新抛出它
      实现这一点的最快、最干净的方法是为
      点实现自己的
      TryParse
      方法。Parse

          public bool TryParse(string source, out Point point)
          {
              try
              {
                  point = Point.Parse(source);
              }
              catch (FormatException ex)
              {
                  point = default(Point);
                  return false;
              }
      
              return true;
          }
      
      您可以这样消费:

              Point point;
              if (!TryParse("12, 13", out point))
              {
                  // We have an invalid Point!
              }
      
      如果字符串不是有效点,该方法将返回false,您可以立即执行任何需要执行的操作。如果解析成功,
      out
      参数将包含解析的
      ,否则将包含
      的默认值,该值可能为(0,0)


      请注意,异常在这里被禁止,但这不会给您带来任何麻烦。如果需要,您可以在设置
      点后重新抛出它
      实现这一点的最快、最干净的方法是为
      点实现自己的
      TryParse
      方法。Parse

          public bool TryParse(string source, out Point point)
          {
              try
              {
                  point = Point.Parse(source);
              }
              catch (FormatException ex)
              {
                  point = default(Point);
                  return false;
              }
      
              return true;
          }
      
      <