我怎么说不是,不是

发布于 2024-11-10 15:12:21 字数 208 浏览 2 评论 0原文

我不想说:

(trsaz != v1) && (trsaz != v2) && ...

我想要这样的东西:

trsaz != (v1, v4, v7, v11)

这可能吗?或者除了 != 之外还有其他东西吗?

i don't want to say:

(trsaz != v1) && (trsaz != v2) && ...

i want something like:

trsaz != (v1, v4, v7, v11)

Is this possible or is there also something else besides !=.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蛮可爱 2024-11-17 15:12:22
var result = (new[] {v1, v4, v7}).Every(o => o != trsaz);
var result = (new[] {v1, v4, v7}).Every(o => o != trsaz);
岁月流歌 2024-11-17 15:12:21
var badList = new[] { v1, v4, v7, v11 };
var result = !badList.Contains(trsaz);
var badList = new[] { v1, v4, v7, v11 };
var result = !badList.Contains(trsaz);
久而酒知 2024-11-17 15:12:21
var excludeList = new[] { "v1", "v4", "v7", "v11" };
if(!excludeList.Contains(trsaz))
{
    ...
}
var excludeList = new[] { "v1", "v4", "v7", "v11" };
if(!excludeList.Contains(trsaz))
{
    ...
}
负佳期 2024-11-17 15:12:21

实际上,我更喜欢为此创建一个小扩展方法:

public static bool IsIn<T>(this T obj, params T[] set) {
    return set.Any(el => element.Equals(obj));        
}

它封装了所有黑魔法并使您的代码非常简洁,这就是您的目标,显然:

if (!trsaz.IsIn(v1, v4, v7, v11)) {
    // ...
}

如果不重要,隐藏该机制总是好的,特别是在使用任何机制根本没有必要,并且会让一些维护代码的人感到困惑。

Actually, I prefer creating a little extension method for that:

public static bool IsIn<T>(this T obj, params T[] set) {
    return set.Any(el => element.Equals(obj));        
}

It encapsulates all the black magic and makes your code really concise which is your goal, obviously:

if (!trsaz.IsIn(v1, v4, v7, v11)) {
    // ...
}

It's always good to hide the mechanism if it's not important, especially in this case where the use of any mechanism is not necessary at all and will confuse some people who will maintain your code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文