C# 中类变量和实例变量之间的差异



我正在完成一个基础编程课程,我很难理解类变量和实例变量(静态和非静态(之间的区别。我需要确定代码中两者之间的区别

Class StudentDetails
{
Int rollNumber;
String studentName;
}
StudentDetails firststudent= StudentDetails (19236, ”Thomas”);

我相信rollNumber,studentName,19236和"Thomas"都是实例变量,第一个学生是一个类变量。

任何这方面的帮助将不胜感激,因为课程材料不是很有帮助。

类变量:只有一个由类的所有不同对象共享的副本,

class StudentDetails
{
static Int rollNumber;
/*...*/
}

实例变量:每个对象都有自己的实例变量的个人副本。因此,跨不同对象的实例变量可以具有不同的值,而跨不同对象的类变量只能具有一个值。

class StudentDetails
{
Int rollNumber;
/*...*/
}

类变量和实例变量都是成员变量

实例(或非静态(变量

同一个实例变量可以具有与对该类的引用数一样多的值,因此,如果您有这样的类并且多次对其进行了初始化,那么您可以更改每个对象实例(foo 和 bar(的每个实例变量(名称(的值:

public class Fancyclass
{
//this is an instance variable
string name;
public static void Main(string[] args)
{
Fancyclass foo = new Fancyclass();
Fancyclass bar = new Fancyclass();
foo.name = "My Name";
bar.name = "Your Name";
Console.WriteLine(foo.name);
Console.WriteLine(bar.name);
}
}

输出:

My Name
Your Name

类(或静态(变量

另一方面,类(或静态(变量只能通过限定命名空间访问,因此您始终在访问相同的值(实际上您无法通过类的引用/实例/对象访问它。如果您尝试,它将显示错误(。您需要它的完整"地址":

public class ClassExample
{
//class (or static) variable
static string name;
public static void Main(string[] args)
{
ClassExample foobar = new ClassExample();

//this will show an error
foobar.name;

//instead you access it this way
ClassExample.name = "PUFF!!"
Console.WriteLine(ClassExample.name);
}
}

输出:

PUFF!!

在类中定义为字段的所有内容都是关联的实例。在下面的类中,两个卷号、学生姓名都是实例关联的。

Class StudentDetails
{
int rollNumber;
string studentName;
}
StudentDetails student = new StudentDetails();

如果在类中定义静态字段,则该字段与该类相关联。

Class StudentDetails
{
int rollNumber;
string studentName;
static int StudentClassNumber = 123
}

在这里,静态字段 StudentClassNumber 与类相关联,而不是与实例相关联。

如果要实例化 StudentDetails,如前所述,则需要在类定义中定义一个非默认构造函数。

Class StudentDetails
{
int rollNumber;
string studentName;
public StudentDetails(int rollnumber, string studentName)
{
this.rollNumber = rollnumber;
this.studentName = studentName;
}
}
StudentDetails firststudent= StudentDetails (19236, "Thomas");

相关内容

  • 没有找到相关文章

最新更新