我可能有一个奇怪的问题,但我会尝试描述它.我有一个带有两个数学运算"%"和"/"的表达式:
int a = x / y;
int a = x % y;
Run Code Online (Sandbox Code Playgroud)
我有一个函数的参数,我检查,我必须为此表达式实现什么Math运算符(%或/).因此,有一种方法可以选择运算符表达而无需重复代码.
int a = parameter ? x / y: x % y;
Run Code Online (Sandbox Code Playgroud)
要么
if (parameter) a = x/y; else a = x%y;
Run Code Online (Sandbox Code Playgroud)
这对我来说不对.
有一种方法可以使用这样的东西:
int a = x (parameter ? / : %) y;
Run Code Online (Sandbox Code Playgroud)
代码愿景问题:
items.Where((item, index) =>
settings.cbl_Direction == Direction.Horizontal ?
index / (int)settings.cbl_RepeatColumns == i
:
index % (int)settings.cbl_RepeatColumns == i)
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
Func<int, int, int> div = (m, n) => m / n;
Func<int, int, int> mod = (m, n) => m % n;
int a = (parameter ? div : mod)(x, y);
Run Code Online (Sandbox Code Playgroud)
在我看来,这会略微增加代码的复杂性,因此坚持使用已有的东西可能会更好.
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |