c# - 寻找更优雅的 DO WHILE 解决方案

标签 c# do-while

所以我有一些代码以 do while 循环为中心。

string token;
var count = 0;      
var checkDataLength= data.Length == 16;

do
{              
    count = 0;
    token = GenerateToken(data, start, end);

    if (checkDataLength)
    {
        if (Mod120Check(token))
        {                      
            count += 1;
        }
    }

    if (IsCompliant(token))
    {
        count += 1;
    }
} 
while (count > 0);

return token;

基本上,我正在生成一个 token ,要使此 token 有效,必须使 Mod120Check 和 IsCompliant 检查失败。我无法更改这些方法返回数据的方式。

虽然上面的代码有效,但我觉得它很丑,我想知道是否有人有更好的方法?

谢谢

最佳答案

试试这个:

do
{
    token = GenerateToken(data, start, end);
} 
while (checkDataLength && Mod120Check(token) || IsCompliant(token))

只需将您的条件移动到while

(!) 请注意,IsCompliant(token) 仅在 checkDataLength && Mod120Check(token) 状态为 false< 时才会被调用。它不应造成任何附带影响,但它可能会造成影响,具体取决于您的 IsCompliant 方法的作用。

关于c# - 寻找更优雅的 DO WHILE 解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51410408/

相关文章:

c# - 使用 BindingSource 绑定(bind)到嵌套属性 - 或者,使实体可绑定(bind)

c - C 中包含三个案例的 Switch 语句。第三个案例运行不正常

java - 执行 while 循环 (Java)

c - Do while 循环给出意外的输出

c# - 在 Ninject 中是否允许将 IKernel 注入(inject)到一些地方?

c# - 在单击另一个控件之前,DataGridView 复选框不会更新

c# - 在 datagridview 中显示 JSON 对象数组

c - C 中 do while 循环条件错误

c++ - 如何在不退出 do while 循环的情况下验证输入?

c# - 使用 linq 实例化包含其他对象列表的对象,其中查询条件位于内部列表上