C# 如何控制是否有人向十进制值发送空字符串?

C# 如何控制是否有人向十进制值发送空字符串?,c#,c#-4.0,C#,C# 4.0,我有一个web服务函数,它有一个十进制值,即BRGEW 客户端应该发送十进制值,但他从SOAP UI发送字符串,转换失败 我这样做是为了控制它,但不起作用 if (General.BRGEW == 0 || General.BRGEW.ToString() == "") { General.BRGEW =0; } 我怎样才能控制这一切 我想您需要String.IsNullOrEmpty(String)方法 检查如果要检查用户输入是否为十进制,可以尝试此操作 var check= doubl

我有一个web服务函数,它有一个十进制值,即BRGEW

客户端应该发送十进制值,但他从SOAP UI发送字符串,转换失败

我这样做是为了控制它,但不起作用

if (General.BRGEW == 0 || General.BRGEW.ToString() == "") {
  General.BRGEW =0;
}

我怎样才能控制这一切

我想您需要String.IsNullOrEmpty(String)方法


检查

如果要检查用户输入是否为十进制,可以尝试此操作

var check= double.IsNaN(variable); //It will return boolean value after that add your code logic

首先,您需要检查该值是否为null或空,如果它不是null或空,则转换它

decimal number;
string value = "";
if(!String.IsNullOrEmpty(value))
{

  if(Decimal.TryParse(value, out number))
   {
     Console.WriteLine("Converted '{0}' to {1}.", value, number);
    }
    else
    {
      Console.WriteLine("Unable to convert '{0}'.", value);
    }

}
不会有太大的变化:)如果
RRGEW
已经是0,那么将其设置为0将没有什么效果


A.让客户发送号码 这将是最简单的解决办法

处理它 如果您无法让客户端发送该号码,则以下操作可能会有所帮助:

  • General.BRGEW
    设为字符串
  • 创建另一个属性,例如
    General.BRGEWAsInt

  • 您不需要创建属性,只需在需要时解析即可。

    它如何“不起作用”?它失败了吗?如果是这样,我相信将If语句改为先请求空字符串就可以了。
    double.TryParse
    有什么问题吗?我的第一条规则是字符串,即永远不要将某些内容存储、传输或重新保存为字符串。字符串很容易成为自动化中第二差的格式,只有原始字节更差。我的第二条规则是,如果你不能做到这一点,至少尝试在两端选择相同的编码和区域性格式现有的WebService类和模式确实倾向于处理这些细节。通常还需要将字符串解析回一些有用的东西,比如数字。在你试图重新发明轮子之前,先试试这些。但是如果您必须手动执行此操作,那么TryParse()就是您应该寻找的机器人。
    if (General.BRGEW == 0)
    {
        General.BRGEW = 0;
    }
    
    public class X {
        public string BRGEW {get; set;}
        public int BRGEWAsInt => Int32.TryParse(BRGEW, out var number)
             ? number
             : 0;
      }