VS2005 中的 C#:整数有设置样式表示法吗?

发布于 2024-09-07 09:38:28 字数 141 浏览 2 评论 0原文

对于 VS2005 中的 C#,您可以执行以下操作:

if number in [1,2..10,12] { ... }

检查 number 是否包含在方括号中定义的集合中?

For C# in VS2005, can you do something like this:

if number in [1,2..10,12] { ... }

which would check if number is contained in the set defined in the square brackets?

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

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

发布评论

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

评论(3

初熏 2024-09-14 09:38:28

.NET 2.0(这是 VS 2005 的目标)没有 Set 的概念。

.NET 3.5 引入了 HashSet,.NET 4 引入了 SortedSet

虽然它们没有字面形式 - 尽管集合初始值设定项提供了一些稍微相似的东西:

new HashSet<int> { 1, 2, 4, 12 }

当然,您可以只使用数组:

int[] values = { 1, 2, 5, 12 };

但是范围< /em> 示例的一部分 - 2..10 - 在任何版本的 C# 中都不存在。

.NET 2.0 (which is what VS 2005 targets) doesn't have the notion of a Set.

.NET 3.5 introduced HashSet<T>, and .NET 4 introduced SortedSet<T>.

There isn't a literal form for them though - although collection initializers provide something slightly similar:

new HashSet<int> { 1, 2, 4, 12 }

Of course, you could just use an array:

int[] values = { 1, 2, 5, 12 };

but the range part of your sample - 2..10 - doesn't exist in any version of C#.

-小熊_ 2024-09-14 09:38:28

不幸的是没有。

但是,您可以使用 ListContains() 方法:

List<int> numbers = ...
if (numbers.Contains(2)) { ... }

如果 numbers 是一个数组,您可以初始化一个新的List 以及数组值:

int[] numbers = { 1, 2, 3, 4 };
List<int> newList = new List<int>(numbers);
if (newList.Contains(2)) { ... }

或使用 Array.Exists()

Array.Exists(numbers, delegate(int i) { return i == 2; });

Unfortunately not.

However, you can use the Contains() method of a List<int>:

List<int> numbers = ...
if (numbers.Contains(2)) { ... }

if numbers is an array, you can either initialize a new List<int> with the array values:

int[] numbers = { 1, 2, 3, 4 };
List<int> newList = new List<int>(numbers);
if (newList.Contains(2)) { ... }

or use Array.Exists():

Array.Exists(numbers, delegate(int i) { return i == 2; });
悲歌长辞 2024-09-14 09:38:28

您可以使用 做您想做的事情Enumerable.Range 方法:

if (Enumerable.Range(2, 8).Concat(new [] { 1, 12 }).Contains(number)) {
    ....
}

当然,这并不像您在基本函数式语言中找到的那样可读......

You can "kind of" do what you want using the Enumerable.Range method:

if (Enumerable.Range(2, 8).Concat(new [] { 1, 12 }).Contains(number)) {
    ....
}

Of course, that's not nearly as readable as what you find in a basic functional language...

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