Разница между переменными класса и экземпляра в C# - PullRequest
0 голосов
/ 23 января 2020

Я заканчиваю курс по основам программирования, и мне трудно понять разницу между переменными класса и переменными экземпляра (stati c и non-stati c). Мне нужно определить разницу между ними в коде

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

Я считаю, что rollNumber, studentName, 19236 и "Thomas" являются переменными экземпляра, а firststudent является переменной класса.

Любая помощь по этому вопросу будет принята, поскольку материал курса не очень полезен.

Ответы [ 2 ]

1 голос
/ 23 января 2020

Переменные класса: имеют только одну копию, которая является общей для всех различных объектов класса,

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

Переменная экземпляра: Каждый объект имеет свой собственная личная копия переменной экземпляра. Таким образом, переменные экземпляра в разных объектах могут иметь разные значения, тогда как переменные класса в разных объектах могут иметь только одно значение.

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

Переменные класса и экземпляра являются переменными-членами

0 голосов
/ 23 января 2020

Все, что определено как поле в классе, является связанным экземпляром. В приведенном ниже классе оба rollnumber и studentName связаны с экземплярами.

Class StudentDetails
{
  int rollNumber;
  string studentName;
}

StudentDetails student = new StudentDetails();

Если вы определяете поле stati c в классе, то оно связывается с классом.

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

Здесь stati c поле 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...