c# – 为什么int.TryParse无法初始化多个变量
发布时间:2020-12-15 23:39:24 所属栏目:百科 来源:网络整理
导读:我使用int.TryParse来解析变量(在数据库中保存为字符串),我很好奇为什么我不能初始化2个变量: int min,max; 使用以下条件语句: bool lengthCompatible = int.TryParse(string1,out min) int.TryParse(string2,out max); Visual Studio(2015)生成以下代码突
我使用int.TryParse来解析变量(在数据库中保存为字符串),我很好奇为什么我不能初始化2个变量:
int min,max; 使用以下条件语句: bool lengthCompatible = int.TryParse(string1,out min) && int.TryParse(string2,out max); Visual Studio(2015)生成以下代码突出显示:
但是,如果我使用2个条件语句: bool minParse = int.TryParse(sentenceType.MinimumLength,out min); bool maxParse = int.TryParse(sentenceType.MaximumLength,out max); 我可以编译没有错误. Curiouser和curiouser!有任何见解赞赏. 干杯 解决方法
那么你正在使用&&,这是短路的…如果int.TryParse(string1,out min)返回false,则不会对int.TryParse进行第二次调用,因此max不是绝对的分配.
你可以写: if (int.TryParse(string1,out min) && int.TryParse(string2,out max)) { // Use min and max here } …因为那时编译器知道如果两个调用都已执行,则只到达if语句的主体. 或者你可以使用带有&的非短路版本.而不是&& bool lengthCompatible = int.TryParse(string1,out min) & int.TryParse(string2,out max); 虽然这有点不寻常.上面if版本的优点是你将保留&&的性能优势,因为如果你不需要,你就不会费心去解析string2. (当然,这取决于你正在尝试做什么.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |