变量和对象之间的区别

时间:2015-11-10 05:15:40

标签: c# .net

好吧,在我学习C#.net

的教程中反复出现两个语句

DataRow dr;

这是什么意思。我假设它是DataRow类的变量。

DataRow dr = new DataRow();

这是什么意思。我认为它是DataRow Class的对象。

但我仍然带着歧义离开,在这种情况下我会使用第一个案例或第二个案例。我现在很困惑。

我认为Java论坛中已经重复了这个问题。但我没有得到它,因为我没有任何Java背景。所以在标记之前重复考虑一下。

5 个答案:

答案 0 :(得分:6)

创建变量有2个部分, 声明 分配

声明部分中,您声明该变量存在且您说明其类型:

DataRow dr; // Create's a variable of type DataRow with a value of null.

分配获取一个值并将变量指向它:

dr = new DataRow(); // Creates a new DataRow and points dr variable to it.

您可以在同一行中执行这两项操作:

DataRow dr = new DataRow();

结果就像你将它们分成上面的两行一样,变量的类型在两种情况下都是DataRow

但变量中的object可以是继承类型:

class MyDataRow : DataRow
{
}

DataRow dr = new MyDataRow(); //Creates a new object of type MyDataRow and points dr to it.

托管objects必须由变量持有,否则为Garbage Collected

答案 1 :(得分:1)

与大多数其他语言一样,C#中的变量是存放内容的地方。可以把它们想象成一个特殊形状的抽屉,你可以完全适合一件事。适合这种抽屉的东西就是价值。

C#本质上有两种基本类型的值:“值类型”值和对象引用。 (现在让我们忽略“指针”。)

“值类型”是C#定义为structenum的任何内容,其中包括基本类型,例如intboolchardouble。这些值直接存储在变量中,如果以任何方式使用变量,则将值复制到使用它的位置(例如,将其赋值给新变量,或作为参数传递给某个方法或运算符)。

C#中不是值类型的所有类型都是“引用类型”,包括数组,字符串和大多数其他类。引用类型的实例不存储在变量中,而是驻留在称为“堆”的特殊存储区中。当您“分配并反对变量”时,实际上只将该对象的引用放入变量中。访问变量时,C#遵循引用以允许访问对象的成员。换句话说,引用类型的“值”只是对象的引用。因此,当您将变量的内容传递给某个运算符或方法或将其分配给其他变量时,您只复制引用,而不是其后面的对象。

答案 2 :(得分:0)

DataRow dr; 

创建一个DataRow类型的变量,但它将为null。

DataRow dr = new DataRow(); 

创建一个变量并为其赋值一个新值,在这种情况下是一个DataRow的实例。

答案 3 :(得分:0)

在C#中,DataRow永远无法实例化。它总是可以用作

DataTable dt = new DataTable(); DataRow dr = dt.NewRow();

上面的语句为表格创建了一个新行。

   DataRow dr=dt.Rows[0];

以上语句从数据表获取第一行。

以下语句在编译时永远不会执行。

  DataRow dr=new DataRow();

Error Screenshot on compilation

答案 4 :(得分:0)

DataRow dr;

这个basiclay告诉dr是" type"的变量。 DataRow中。它不会自己创建DataRow对象。

**DataRow dr = new DataRow();**

这实际上创建了对象并将其存储到" dr"变量。

你可以这样写......

DataRow dr;
dr = new DataRow();

在第二行注意,我已经知道" dr"是DataRow类型。

如果你想调用Datarow的任何功能,那么首先你必须创建它的实例..实例是通过使用" new"来创建的。关键字。