标签: enumeration

foreach标识符和闭包

在以下两个片段中,第一个是安全的还是你必须做第二个?

安全我的意思是每个线程保证从创建线程的相同循环迭代中调用Foo上的方法?

或者你必须将引用复制到一个新的变量"local"到循环的每次迭代?

var threads = new List<Thread>();
foreach (Foo f in ListOfFoo)
{      
    Thread thread = new Thread(() => f.DoSomething());
    threads.Add(thread);
    thread.Start();
}
Run Code Online (Sandbox Code Playgroud)

-

var threads = new List<Thread>();
foreach (Foo f in ListOfFoo)
{      
    Foo f2 = f;
    Thread thread = new Thread(() => f2.DoSomething());
    threads.Add(thread);
    thread.Start();
}
Run Code Online (Sandbox Code Playgroud)

更新:正如Jon Skeet的回答所指出的,这与线程没有任何关系.

c# closures enumeration

78
推荐指数
3
解决办法
1万
查看次数

收集被修改; 枚举操作可能无法在ArrayList中执行

我正在尝试删除一个项目ArrayList,我得到这个例外:
Collection was modified; enumeration operation may not execute.

有任何想法吗?

c# collections enumeration exception

78
推荐指数
6
解决办法
17万
查看次数

枚举或列出[您最喜欢的语言]程序中的所有变量

一位朋友上周问我如何枚举或列出程序/函数/等中的所有变量.出于调试的目的(基本上获取所有内容的快照,以便您可以查看设置了哪些变量,或者是否设置了它们).我环顾四周,找到了一个比较好的Python方法:

#!/usr/bin/python                                                                                                                                                                                                                           
foo1 = "Hello world"
foo2 = "bar"
foo3 = {"1":"a",
        "2":"b"}
foo4 = "1+1"

for name in dir():
    myvalue = eval(name)
    print name, "is", type(name), "and is equal to ", myvalue

这将输出如下内容:

__builtins__ is <type 'str'> and is equal to  <module '__builtin__' (built-in)>
__doc__ is <type 'str'> and is equal to  None
__file__ is <type 'str'> and is equal to  ./foo.py
__name__ is <type 'str'> and is equal to  __main__
foo1 is <type 'str'> and is equal to …

variables debugging enumeration

77
推荐指数
8
解决办法
5万
查看次数

在Swift中枚举期间从数组中删除?

我想枚举Swift中的数组,并删除某些项目.我想知道这是否安全,如果没有,我应该如何做到这一点.

目前,我会这样做:

for (index, aString: String) in enumerate(array) {
    //Some of the strings...
    array.removeAtIndex(index)
}
Run Code Online (Sandbox Code Playgroud)

arrays enumeration ios swift

77
推荐指数
5
解决办法
3万
查看次数

枚举的单数或复数?

您是使用单数还是复数进行枚举?我认为在宣言中使用复数是最合理的

enum Weekdays
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}
Run Code Online (Sandbox Code Playgroud)

...但我认为使用该类型时,单数形式更有意义,例如

Weekday firstDayOfWeek = Weekday.Monday;
Run Code Online (Sandbox Code Playgroud)

我在某个地方读了一个建议,使用单数的常规枚举和带有标志的复数,但我想听到更多的利弊.

enumeration coding-style

76
推荐指数
6
解决办法
2万
查看次数

迭代器和枚举器之间的区别

.NET 3.5作业的面试问题是"迭代器和枚举器之间有什么区别"?

这是一个核心区别,LINQ等等.

无论如何,有什么区别?我似乎无法在网上找到一个可靠的定义.毫无疑问,我可以找到两个术语的含义,但我得到的答案略有不同.面试的最佳答案是什么?

IMO迭代器"迭代"集合,枚举器提供迭代功能,但必须调用它.

此外,使用yield关键字据说可以保存状态.究竟是什么状态?是否有这种好处的例子?

.net c# iterator enumeration generator

71
推荐指数
6
解决办法
4万
查看次数

在Java 8中迭代枚举

是否可以Enumeration使用Lambda Expression 进行迭代?以下代码片段的Lambda表示形式是什么:

Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();

while (nets.hasMoreElements()) {
    NetworkInterface networkInterface = nets.nextElement();

}
Run Code Online (Sandbox Code Playgroud)

我没有在其中找到任何流.

java iteration lambda enumeration java-8

70
推荐指数
7
解决办法
5万
查看次数

在'foreach'循环中修改列表的最佳方法是什么?

C#/ .NET 4.0中的一个新功能是,您可以在foreach不获取异常的情况下更改您的枚举.请参阅Paul Jackson的博客文章"并发的有趣副作用:在枚举时从集合中删除项目"以获取有关此更改的信息.

执行以下操作的最佳方法是什么?

foreach(var item in Enumerable)
{
    foreach(var item2 in item.Enumerable)
    {
        item.Add(new item2)
    }
}
Run Code Online (Sandbox Code Playgroud)

通常我使用IList一个缓存/缓冲区直到结束foreach,但是有更好的方法吗?

.net c# enumeration list enumerable

68
推荐指数
5
解决办法
10万
查看次数

使用java泛型迭代枚举值

我正在尝试找到一种在使用泛型时迭代枚举值的方法.不知道如何做到这一点或是否有可能.

以下代码说明了我想要做的事情.请注意,代码T.values()在以下代码中无效.

public class Filter<T> {
    private List<T> availableOptions = new ArrayList<T>();
    private T selectedOption;

    public Filter(T selectedOption) {
        this.selectedOption = selectedOption;
        for (T option : T.values()) {  // INVALID CODE
            availableOptions.add(option);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我将如何实例化Filter对象:

Filter<TimePeriod> filter = new Filter<TimePeriod>(TimePeriod.ALL);
Run Code Online (Sandbox Code Playgroud)

枚举定义如下:

public enum TimePeriod {
    ALL("All"), 
    FUTURE("Future"), 
    NEXT7DAYS("Next 7 Days"), 
    NEXT14DAYS("Next 14 Days"), 
    NEXT30DAYS("Next 30 Days"), 
    PAST("Past"),
    LAST7DAYS("Last 7 Days"), 
    LAST14DAYS("Last 14 Days"),
    LAST30DAYS("Last 30 Days"); 

    private final String name;

    private TimePeriod(String name) {
        this.name = name; …
Run Code Online (Sandbox Code Playgroud)

java generics enums enumeration

66
推荐指数
4
解决办法
4万
查看次数

为什么枚举不可以进行?

在Java 5及更高版本中,你有foreach循环,它可以在任何实现的东西上神奇地工作Iterable:

for (Object o : list) {
  doStuff(o);
}
Run Code Online (Sandbox Code Playgroud)

但是,Enumerable仍然没有实现Iterable,这意味着迭代Enumeration你必须执行以下操作:

for(; e.hasMoreElements() ;) {
  doStuff(e.nextElement());
}
Run Code Online (Sandbox Code Playgroud)

有谁知道有没有理由Enumeration仍然没有实现Iterable

编辑:作为澄清,我不是在谈论枚举的语言概念,我在谈论Java API中称为" 枚举 " 的特定于Java的类.

java enumeration iterable

65
推荐指数
4
解决办法
2万
查看次数