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
,正如预期的那样。