我正在完成一个基础编程课程,我很难理解类变量和实例变量(静态和非静态(之间的区别。我需要确定代码中两者之间的区别
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");