遍历List<T>时,出现比较奇怪的问题;百思不得其解,请教牛人。
/*Loop Generic List
* Print:
* 1 001wqk female
* 1 001wqk female
*/
这里输出的东西,让人很疑问。
我觉得应该输出/*Loop Generic List
* Print:
* 0 000wqk male
* 1 001wqk female
*/
using System;
using System.Collections.Generic;
using System.Text;namespace StringCls
{
[Serializable]
public class PersonEntity
{
public PersonEntity()
{
} private int _id;
public int ID
{
get { return _id; }
set { _id = value; }
} private string name;
public string Name
{
get { return name; }
set { name = value; }
} private string sex;
public string Sex
{
get { return sex; }
set { sex = value; }
}
}
}
using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Text;namespace StringCls
{
class Program
{
static void Main(string[] args)
{
PersonEntity entity = new PersonEntity();
List<PersonEntity> entities = new List<PersonEntity>(); DataTable dt = GenerateDataTable();
PopulateDataTable(dt);
/*Loop DataTable
* Print:
* 0 000wqk male
* 1 001wqk female
*/
foreach(DataRow dr in dt.Rows)
{
Console.WriteLine(dr["ID"].ToString()+" "+dr["Name"].ToString()+" "+dr["Sex"].ToString());
}
Console.WriteLine("-------------------");
for (int i = 0; i < dt.Rows.Count; i++)
{
entity.ID = Convert.ToInt32(dt.Rows[i]["ID"].ToString());
entity.Name = dt.Rows[i]["Name"].ToString();
entity.Sex = dt.Rows[i]["Sex"].ToString();
entities.Add(entity);
}
/*Loop Generic List
* Print:
* 1 001wqk female
* 1 001wqk female
*/
LoopGenericList(entities);
Console.ReadLine();
}
/// <summary>
/// Loop Generic List
/// </summary>
/// <param name="entities"></param>
static void LoopGenericList(List<PersonEntity> entities)
{
foreach (PersonEntity entity in entities)
{
Console.WriteLine(entity.ID + " " + entity.Name + " " + entity.Sex);
}
}
/// <summary>
/// Generate structure of DataTable
/// </summary>
/// <returns></returns>
static DataTable GenerateDataTable()
{
DataTable dt = new DataTable(); DataColumn dc = new DataColumn();
dc.ColumnName = "ID";
dc.DataType = typeof(System.Int32);
dt.Columns.Add(dc); dc = new DataColumn();
dc.ColumnName = "Name";
dc.DataType = typeof(System.String);
dt.Columns.Add(dc); dc = new DataColumn();
dc.ColumnName = "Sex";
dc.DataType = typeof(System.String);
dt.Columns.Add(dc);
return dt;
}
/// <summary>
/// Populate DataTable
/// </summary>
/// <param name="dt"></param>
static void PopulateDataTable(DataTable dt)
{
for (int i = 0; i < 2; i++)
{
DataRow dr = dt.NewRow();
dr["ID"] = i;
dr["Name"] = "00" + i.ToString() + "wqk";
dr["Sex"] = i == 0 ? "male" : "female";
dt.Rows.Add(dr);
}
}
}
}
/*Loop Generic List
* Print:
* 1 001wqk female
* 1 001wqk female
*/
这里输出的东西,让人很疑问。
我觉得应该输出/*Loop Generic List
* Print:
* 0 000wqk male
* 1 001wqk female
*/
using System;
using System.Collections.Generic;
using System.Text;namespace StringCls
{
[Serializable]
public class PersonEntity
{
public PersonEntity()
{
} private int _id;
public int ID
{
get { return _id; }
set { _id = value; }
} private string name;
public string Name
{
get { return name; }
set { name = value; }
} private string sex;
public string Sex
{
get { return sex; }
set { sex = value; }
}
}
}
using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Text;namespace StringCls
{
class Program
{
static void Main(string[] args)
{
PersonEntity entity = new PersonEntity();
List<PersonEntity> entities = new List<PersonEntity>(); DataTable dt = GenerateDataTable();
PopulateDataTable(dt);
/*Loop DataTable
* Print:
* 0 000wqk male
* 1 001wqk female
*/
foreach(DataRow dr in dt.Rows)
{
Console.WriteLine(dr["ID"].ToString()+" "+dr["Name"].ToString()+" "+dr["Sex"].ToString());
}
Console.WriteLine("-------------------");
for (int i = 0; i < dt.Rows.Count; i++)
{
entity.ID = Convert.ToInt32(dt.Rows[i]["ID"].ToString());
entity.Name = dt.Rows[i]["Name"].ToString();
entity.Sex = dt.Rows[i]["Sex"].ToString();
entities.Add(entity);
}
/*Loop Generic List
* Print:
* 1 001wqk female
* 1 001wqk female
*/
LoopGenericList(entities);
Console.ReadLine();
}
/// <summary>
/// Loop Generic List
/// </summary>
/// <param name="entities"></param>
static void LoopGenericList(List<PersonEntity> entities)
{
foreach (PersonEntity entity in entities)
{
Console.WriteLine(entity.ID + " " + entity.Name + " " + entity.Sex);
}
}
/// <summary>
/// Generate structure of DataTable
/// </summary>
/// <returns></returns>
static DataTable GenerateDataTable()
{
DataTable dt = new DataTable(); DataColumn dc = new DataColumn();
dc.ColumnName = "ID";
dc.DataType = typeof(System.Int32);
dt.Columns.Add(dc); dc = new DataColumn();
dc.ColumnName = "Name";
dc.DataType = typeof(System.String);
dt.Columns.Add(dc); dc = new DataColumn();
dc.ColumnName = "Sex";
dc.DataType = typeof(System.String);
dt.Columns.Add(dc);
return dt;
}
/// <summary>
/// Populate DataTable
/// </summary>
/// <param name="dt"></param>
static void PopulateDataTable(DataTable dt)
{
for (int i = 0; i < 2; i++)
{
DataRow dr = dt.NewRow();
dr["ID"] = i;
dr["Name"] = "00" + i.ToString() + "wqk";
dr["Sex"] = i == 0 ? "male" : "female";
dt.Rows.Add(dr);
}
}
}
}
解决方案 »
- 如何控制MDI 子窗体的大小
- 在一个数据维护小系统中,有很多关于表的类,在同一dll中,我怎样才能动态实例化它们?
- vs 2005 安装后运行调试遇到的一个郁闷问题---在线期求解答!
- 怎样获取当前时间并且对时间模糊查询?
- 三个月完成15000行代码,多少钱
- 请问xdjm有没有做过用。net开发windows服务的东西。或给代码和思路。xiexie
- 怎样在C#中向oracle的存储过程传递一个date类型的参数?
- 怎样学习C#比较容易上手?
- 急啊,c# winform中的datagridview问题?
- 急求一个工商银行密码和验证码赋值。。。。
- 怎么找到c# 程序里连接ORACLE的用户名和密码
- 怎样读取XML数据,然后在该xml中继续增加节点?
{
PersonEntity entity = new PersonEntity(); entity.ID = Convert.ToInt32(dt.Rows[i]["ID"].ToString());
entity.Name = dt.Rows[i]["Name"].ToString();
entity.Sex = dt.Rows[i]["Sex"].ToString();
entities.Add(entity);
}
{
PersonEntity entity = new PersonEntity(); entity.ID = Convert.ToInt32(dt.Rows[i]["ID"].ToString());
entity.Name = dt.Rows[i]["Name"].ToString();
entity.Sex = dt.Rows[i]["Sex"].ToString();
entities.Add(entity);
} 引用类型,每次操作都是同一块内存。
我调试啊,到entities.Add(entity)还很正常,怎么出来循环两条数据就一样了呢。调啊调..
^_^调的都不知道思考了^_^for (int i = 0; i < 2; i++)
{
DataRow dr = dt.NewRow();
dr["ID"] = i;
dr["Name"] = "00" + i.ToString() + "wqk";
dr["Sex"] = i == 0 ? "male" : "female";
dt.Rows.Add(dr);
}