none
for中变量循环引用的问题 RRS feed

  • 问题

  • 上代码
    private void BookList_Loaded(object sender, RoutedEventArgs e) { List<Book> books = new List<Book>() ; Book bookobj = new Book(); for(int i=1;i<=5;i++) { bookobj.ID=i; bookobj.Name="Professional ASP.NET (第"+i+"版)"; books.Add(bookobj); } BookList.ItemsSource = books; }
    正确的来说结果应是Professional ASP.NET (第1版
    Professional ASP.NET (第2版)
    Professional ASP.NET (第3版)
    Professional ASP.NET (第4版)
    Professional ASP.NET (第5版)

    但是给实际出来是 Professional ASP.NET (第5版)
    Professional ASP.NET (第5版)
    Professional ASP.NET (第5版)
    Professional ASP.NET (第5版)
    Professional ASP.NET (第5版)
    i就成了最后那次循环的值了,很奇怪的问题哦。
    book类没有做INotifyPropertyChanged实现,哪位大侠给解答一下,谢谢
    • 已编辑 无 名 2009年6月16日 3:54
    2009年6月16日 3:49

答案



  • 你把一个对象加入了n次    这个对象的值总是被更改 但是只有一个name存在

    需要把 new 放入循环


                for(int i=1;i<=5;i++)
                {
            Book bookobj = new Book();
                    bookobj.ID=i;
                    bookobj.Name="Professional ASP.NET (第"+i+"版)";
                    books.Add(bookobj);
                }
    紫柔版主的头像真叫萌得一个不行啊。。。。
    答案800 撒花
    • 已标记为答案 无 名 2009年6月16日 4:00
    2009年6月16日 3:57

全部回复



  • 你把一个对象加入了n次    这个对象的值总是被更改 但是只有一个name存在

    需要把 new 放入循环


                for(int i=1;i<=5;i++)
                {
            Book bookobj = new Book();
                    bookobj.ID=i;
                    bookobj.Name="Professional ASP.NET (第"+i+"版)";
                    books.Add(bookobj);
                }
    紫柔版主的头像真叫萌得一个不行啊。。。。
    答案800 撒花
    • 已标记为答案 无 名 2009年6月16日 4:00
    2009年6月16日 3:57


  • 你把一个对象加入了n次    这个对象的值总是被更改 但是只有一个name存在

    需要把 new 放入循环


                for(int i=1;i<=5;i++)
                {
            Book bookobj = new Book();
                    bookobj.ID=i;
                    bookobj.Name="Professional ASP.NET (第"+i+"版)";
                    books.Add(bookobj);
                }

    果然,呵呵,犯错误了。多谢韦恩大侠
    2009年6月16日 4:00


  • 你把一个对象加入了n次    这个对象的值总是被更改 但是只有一个name存在

    需要把 new 放入循环


                for(int i=1;i<=5;i++)
                {
            Book bookobj = new Book();
                    bookobj.ID=i;
                    bookobj.Name="Professional ASP.NET (第"+i+"版)";
                    books.Add(bookobj);
                }

    果然,呵呵,犯错误了。多谢韦恩大侠

    别客气阿   错误大家都会犯  所以正常质量管理中都会有code review  让别人帮咱看看
    紫柔版主的头像真叫萌得一个不行啊。。。。
    答案800 撒花
    2009年6月16日 4:06
  • 我们公司都不正常,没有质量管理,只有三个tester,没有review。

    2009年6月16日 5:54