“formMain entry = new formMain(dt.Rows [0] [0] .ToString());”这是什么意思?特别是行[0] [0]

时间:2015-08-31 04:03:01

标签: c#

我是编程世界的新手。我得到了一个项目,现在坚持使用数据库连接。感谢回复!

formMain entry = new formMain(dt.Rows[0][0].ToString());

这是什么意思?特别是Rows[0][0]

请帮忙。

2 个答案:

答案 0 :(得分:0)

“formMain entry = new formMain”是一个构造函数语法,这意味着该算法正在创建一个formMain类型的对象并调用该对象formMain。

Rows [0] [0]是一个名为Rows的多维数组内的多维数组引用。行[0] [0]本身可能是任何类型的数据,包括值,数组,多维数组,对象......

如果X是一个数组,则X [0]是数组中的第一个值,例如: X = [3,4,2,8,9]; X [0] = 3。

如果Y是多维数组,则Y [0]是第一个子数组,Y [0] [0]是数组Y [0]中的第一个条目,例如: Y = [[2,4,1],[2,3],[9,9,9,9]]; Y [1] [1] = 3。

另外因为它是dt.Rows,这意味着Rows是一个名为'dt'的对象的属性。 dt几乎普遍表示数据表(尽管这是正常/最佳实践,不是语言的一部分)。

假设代码中有一个正常的RDB(关系数据库)引用(现在我可能假设太多,所以仔细检查)行[0] [0]看起来像存储在特定数据库表中的左上角单元格在对象dt。

有关c#中的多维数组的更多信息:

有关c#中构造函数的更多信息:https://msdn.microsoft.com/en-us/library/ace5hbzh.aspx

答案 1 :(得分:0)

dt很可能是DataTable类的对象(将DataTable视为普通数据库表),它公开了Row类型的属性DataRow[] }(一个DataRow数组,使用它可以通过传递行索引来访问DataTable的单行;例如dt.Rows[4]将为您提供DataTable的第5行。

DataRow对象(将DataRow视为单行数据)依次公开自己的object[]类型的索引器(object数组) ,通过该工具,您可以访问DataRow的所有列的各个值。因此,如果您的DataRow对象名为dr,则可以使用dr[2]来访问或更改此dr的第3列的值。因此,如果要访问或更改第5行第3列的值,可以执行以下操作:

var dr = dt[4];  //5th row is returned and stored in dr
var MyVal = dr[2];  //Value of dr's 3rd column is stored in MyVal

或者您可以在一行中执行此操作:

var MyVal = dt[4][2];

这正是您的代码正在执行的操作,即它基本上将dt第一行第一列的值传递给frmMain的构造函数。

我怀疑你的DataTable只被用作单个值的容器(一个整数,一个字符串等),即dt只包含一行而该行只有一行其中一个值,可能是某个东西的ID。如果是这种情况,您应该更好地检查代码并查看它实际准备的位置并填充dt对象。有更好的方法可以从数据库访问单个值(google for ExecuteScalar()),这样您就可以先创建DataTable,然后再访问其行和列。