C# c中返回值中的问题#
我试图检查此函数中控件的出现情况,但每次它返回值为C# c中返回值中的问题#,c#,C#,我试图检查此函数中控件的出现情况,但每次它返回值为“0”,即使文本存在: private int FindOccurenceCheckbox(string substr) { string reqstr = Request.Form.ToString(); substr = "CheckBoxdll"; return ((reqstr.Length - reqstr.Replace(substr, "").Length) / substr.Length); } 这是r
“0”
,即使文本存在:
private int FindOccurenceCheckbox(string substr)
{
string reqstr = Request.Form.ToString();
substr = "CheckBoxdll";
return ((reqstr.Length - reqstr.Replace(substr, "").Length) / substr.Length);
}
这是reqstr
的值:
"_EVENTTARGET=ddlcontrols&_EVENTARGUMENT=&&u LASTFOCUS=&&u VIEWSTATE=%2WEPDWukltiYNjcyTi5Ma9KfGICAW9KfGICAQ8QZgQwaqibZBGbR5FX0NVBNRYB2XZumVxDwLYZVBVC3RcyWnR2V5x18WAQUNq1TCB3HKBGWTMZaczCzPyKbYKbGbLf5N&&uUuU EVENTVALIDATION=%2WEWwKf0BalbjeffauPa7QbQb7Fv6Fv7Bf7Bf7Bf7Bf7Bf7Bf7Bf7Bf7Bf7Bf7Bf7Bf7Bf2FwBf2FwBf7Bf2Fvc2Fwbdpso%3d&ddlcontrols=下拉列表&ddlDynamic-1=&txtDynamic-1=&CheckBoxdll-1=on“
有人能帮我吗?为什么总是返回您正在执行的值“0”
?。如果(reqstr.Length-reqstr.Replace(substr,”).Length)的值
小于substr.Length
的值,这将始终返回0
。即使除法不是整数,结果也会被截断,因为方法的返回值是int
更新:
该答案收集了大量评论,指出如果reqstr
和substr
变量具有问题提供的值,则整数除法将不是问题(除法仍然是整数,但它将返回正整数而不是0
)。这当然是正确的,但如果您正在接收0
,则这也是正确的,因为除法的结果也是0
因此,我认为除了这个问题作为事实提供的部分内容根本不真实(例如,两个字符串的内容)之外,没有其他解释。思维方式很好。我已经运行了您的代码,似乎在键存在时返回
1
,如果不存在,则返回0
如果您唯一感兴趣的是检查请求.Form
中是否存在密钥,那么您可以用更简洁有趣的方式进行检查。尝试以下方法:
private bool FindOccurenceCheckbox(string substr)
{
return Request.Form.AllKeys.Contains(substr);
}
更新
Iridium确定了一个点,用来计算CheckBoxdll-*
的数量。记下LINQ的更新
private int FindOccurenceCheckbox(string substr)
{
return Request.Form.AllKeys.Count(p=>p.StartsWith(substr));
}
(reqstr.Length-reqstr.Replace(substr,“”.Length)的值如何替换
永远不能是substr.Length
的倍数吗?@dtb:我不知道。我只能推测reqstr
或substr
的值不是问题所说的值。代码看起来太简单了,不允许任何其他解释。@downvoter:请留下评论帮助我改进这个答案。-1:我同意dtb.Integer部门与这个问题无关。由于一些人认为这是一个好的答案,我认为这个答案与问题无关,我选择投反对票以补偿赞成票…@erikH:我理解你的担心,尽管我可以说答案一针见血,因为“如果。。。这句话准确地描述了发生的事情。您认为更新是一种改进吗?我认为原始代码的目的是确定它出现的次数,而不仅仅是它是否出现。在请求中不能有多个项。表单您会注意到搜索是为了“CheckBoxdll”,而示例表单数据包含“CheckBoxdll-1”。可能还有“CheckBoxdll-2”、“CheckBoxdll-3”等,目标是确定有多少。为什么您的方法有一个substr
参数?在方法内部将其设置为“CheckBoxdll”
!在您的示例中,它应该返回1。您是否确实看到(调试时)包含该值的reqstr?我通过为您发布的值分配一个字符串reqstr
来运行您的代码,该方法返回1
,正如预期的那样。