Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新新数据行中的值也会影响其所在的数据表';谁来的?_C#_Datatable_Datarow - Fatal编程技术网

C# 更新新数据行中的值也会影响其所在的数据表';谁来的?

C# 更新新数据行中的值也会影响其所在的数据表';谁来的?,c#,datatable,datarow,C#,Datatable,Datarow,这是我的第一个问题, 我到处找了找,但找不到答案, 如果有任何帮助,我将不胜感激 假设我有一个名为dtTest的数据表,如下所示 +----+------+ | id | name | +----+------+ | 1 | AA | | 2 | BB | +----+------+ 当我从dtTest创建新数据行并更新其值时 DataRow drTest=dtTest.Rows[0]; drTest[“名称”]=“抄送”; 我想我唯一更改的是新对象中的值drTest, 它独立于

这是我的第一个问题,
我到处找了找,但找不到答案,
如果有任何帮助,我将不胜感激

假设我有一个名为
dtTest
的数据表,如下所示

+----+------+
| id | name |
+----+------+
|  1 | AA   |
|  2 | BB   |
+----+------+
当我从
dtTest
创建新数据行并更新其值时

DataRow drTest=dtTest.Rows[0];
drTest[“名称”]=“抄送”;
我想我唯一更改的是新对象中的值
drTest

它独立于
dtTest

但是
dtTest
实际上也受到了影响

+----+------+
| id | name |
+----+------+
|  1 | CC   |
|  2 | BB   |
+----+------+

为什么此操作会影响原始数据表?

这不会创建新行,但只是对表中第一行的引用:

DataRow drTest = dtTest.Rows[0];  // Rows is a DataRowCollection which contains all table-rows
如果要创建新行,可以使用以下选项:

DataRow drTest1 = dtTest.NewRow();             // not yet added, you need: dtTest.Rows.Add(drTest1);
DataRow drTest2 = dtTest.Rows.Add();           // already added without values
DataRow drTest3 = dtTest.Rows.Add(1, "test");  // already added with values

drTest
dtTest
表的行对象。因此,对
drtest
的任何更改都将影响数据表
dtTest

如果需要新行,请执行以下操作:

DataRow drTest1 = dtTest.NewRow();
dtTest["ID"] = 3;
dtTest["name"] = "CC;

因为
DataRow
是一种参考类型谢谢你的回复,我会记下来的。也谢谢你的回复!