c# – 确定圆形集中的数字是大于还是小于1的数字

我不得不问这个……我可以通过一些简单的’if’语句解决这个问题,但我确信有一种更简单的方法!

我有一个分页控件,允许用户向左移动一页或向右移动一页.每个页面都有一个索引.页面循环,因此,如果您有三个页面并且您继续向右移动,则用户会看到:

0 => 1 => 2 => 0 => 1 ...

我有当前页面索引和上一页索引.如何确定用户是向右还是向左分页?

谢谢!

最佳答案 没有足够的信息来回答这个问题;并不总是可以判断用户是仅使用当前和之前的索引“向右”或“向左”移动.

例如,假设current = 0,previous = 1.

用户是向左移动还是用户向右移动并且溢出为0,因为只有两个页面?这是不可能的.

如果你不知道页数,这里有一些粗略的解决方案:

// Doesn't handle wrap arounds properly.
bool movedRight = current == previous + 1; 

// Assumes that being at the start point always means an overflow occurred.    
bool movedRight = (current == previous + 1) || current == 0; 

// Assumes that being at the start point always means an overflow occurred,
// except when we were previously at the second element.
bool movedRight = (current == previous + 1)  || (current == 0 && previous != 1); 

如果您知道页数,则可能更直观:

// Can't disambiguate when numPages == 1 or 2
bool movedRight = current == (previous + 1) % numPages;

但是,当只有一两页时,仍然没有足够的信息来说明用户做了什么:在这些情况下,左右移动会产生相同的“结果”.如果你必须在这些情况下左右区分,显而易见的解决方案是简单地存储用户单独分页的方向.您可能不应该尝试计算无法计算的东西. 🙂

点赞