Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

C# структура

Структура C#

В этом руководстве вы узнаете о структурах в C# с помощью примеров.

Структура (структура) похожа на класс в C#, который используется для хранения данных. Однако, в отличие от классов, структура является типом значения.

Предположим, мы хотим сохранить имя и возраст человека. Мы можем создать две переменные:name и возраст и сохраняйте ценность.

Однако предположим, что мы хотим хранить одну и ту же информацию о нескольких людях.

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

<час>

Определить структуру в C#

В C# мы используем struct ключевое слово для определения структуры. Например,

struct Employee  {
  public int id;
}

Здесь идентификатор поле внутри структуры. Структура может также включать методы, индексаторы и т. д.

<час>

Объявить структурную переменную

Прежде чем использовать структуру, нам сначала нужно создать переменную структуры. Мы используем имя структуры с переменной для объявления переменной структуры. Например,

struct Employee {
  public int id;
}
...

// declare emp of struct Employee
Employee emp;

В приведенном выше примере мы создали структуру с именем Employee. . Здесь мы объявили переменную emp структуры Employee .

<час>

Доступ к структуре C#

Мы используем переменную struct вместе с . оператор для доступа к членам структуры. Например,

struct Employee {
  public int id;
}
... 
// declare emp of struct Employee
Employee emp;

// access member of struct      
emp.id = 1;

Здесь мы использовали переменную emp структуры Employee с . оператор для доступа к членам Employee .

emp.id = 1;

Это обеспечивает доступ к id поле структуры Employee .

Примечание :примитивные типы данных, такие как int , bool , float являются предопределенными структурами в C#.

<час>

Пример:структура C#

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public int id;

    public void getId(int id) {
      Console.WriteLine("Employee Id: " + id);
    }
  }
 
  class Program {
    static void Main(string[] args) {
 
      // declare emp of struct Employee
      Employee emp;
      
      // accesses and sets struct field
      emp.id = 1;

      // accesses struct methods
      emp.getId(emp.id);

      Console.ReadLine();
    }
  }
}

Вывод

Employee Id: 1

В приведенной выше программе мы создали структуру с именем Employee. . Он содержит поле id и метод getId() .

Внутри Программы class, мы объявили переменную emp структуры Сотрудник . Затем мы использовали emp переменная для доступа к полям и методам класса.

Примечание :мы также можем создать экземпляр структуры с помощью new ключевое слово. Например,

Employee emp = new Employee();

Здесь эта строка вызывает конструктор структуры без параметров и инициализирует все члены значениями по умолчанию.

<час>

Конструкторы в структуре C#

В C# структура также может включать конструкторы. Например,

struct Employee {

  public int id;

  // constructor 
  public Employee(int employeeId) {
   id = employeeId
  }
}

Здесь мы создали параметризованный конструктор Employee() с параметром employeeId .

Примечание :мы не можем создавать конструкторы без параметров в C# версии 9.0 или ниже.

<час>

Пример:конструктор в структурах C#

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public int id;
    
    public string name;

    // parameterized constructor
    public Employee(int employeeId, string employeeName) {
   
      id = employeeId;
      name = employeeName;
    }
  }
 
  class Program {
    static void Main(string[] args) {
 
      // calls constructor of struct
      Employee emp = new Employee(1, "Brian");

      Console.WriteLine("Employee Name: " + emp.name);
      Console.WriteLine("Employee Id: " + emp.id);

      Console.ReadLine();
    }
  }
}

Вывод

Employee Name: Brian
Employee Id: 1

В приведенном выше примере мы создали параметризованный конструктор внутри класса Employee. структура. Внутри конструктора мы присвоили значения полям:id и имя .

Обратите внимание на строку,

Employee emp = new Employee(1, "Brian");

Как и в классах C#, мы используем код new ключевое слово для вызова конструктора. Здесь 1 и "Брайан" аргументы, передаваемые конструктору, где они назначаются параметрам employeeID и имя_сотрудника соответственно."

Примечание :мы должны присвоить значение каждому полю структуры внутри параметризованного конструктора. Например,

// error code
public Employee(int employeeID, employeeName) {
  id = employeeID;
}

Здесь мы не присвоили значение для name поле. Таким образом, код выдаст ошибку.

<час>

Свойства в структуре C#

Мы также можем использовать свойства внутри структуры C#. Например,

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public int id;
    
    // creates property
    public int Id {

      // returns id field
      get {
        return id;
      }

      // sets id field
      set {
        id = value;
      }
    }
  }
 
  class Program {
    static void Main(string[] args) {
 
      // calls the constructor of struct
      Employee emp = new Employee();

      emp.Id = 1;
      Console.WriteLine("Employee Id: " + emp.Id);

      Console.ReadLine();

    }
  }
}

Вывод

Employee Id: 1

В приведенном выше примере у нас есть Id свойство внутри Employee структура.

получить метод возвращает id поле и набор метод присваивает значение id поле.

<час>

Разница между классом и структурой в C#

В C# классы и структуры выглядят одинаково. Однако между ними есть некоторые различия.

Класс — это ссылочный тип, тогда как структура — это тип значения. Например,

using System;
namespace CsharpStruct {
 
  // defining class
  class Employee {
    public string name;

  }
 
  class Program {
    static void Main(string[] args) {

      Employee emp1 = new Employee();
      emp1.name = "John";

      // assign emp1 to emp2
      Employee emp2 = emp1;
      emp2.name = "Ed";
      Console.WriteLine("Employee1 name: " + emp1.name);

      Console.ReadLine();
    }
  }
}

Вывод

Employee1 name: Ed

В приведенном выше примере мы присвоили значение emp1 в emp2 . emp2 object ссылается на тот же объект, что и emp1 . Итак, обновление в emp2 обновляет значение emp1 автоматически.

Вот почему класс является ссылочным типом. .

В отличие от классов, когда мы присваиваем одну структурную переменную другой, значение структуры копируется в назначенную переменную. Таким образом, обновление одной структурной переменной не влияет на другую. Например,

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public string name;

  }
 
  class Program {
    static void Main(string[] args) {

      Employee emp1 = new Employee();
      emp1.name = "John";

      // assign emp1 to emp2
      Employee emp2 = emp1;
      emp2.name = "Ed";
      Console.WriteLine("Employee1 name: " + emp1.name);
      
      Console.ReadLine();
    }
  }
}

Вывод

Employee1 name: John

Когда мы присваиваем значение emp1 в emp2 , новое значение emp2 создано. Здесь значение emp1 копируется в emp2 . Итак, измените emp2 не влияет на emp1 .

Вот почему struct является типом значения. .

Более того, наследование в структурах невозможно, тогда как в классах C# это важная функция.


Язык C

  1. C-структура
  2. C-структуры и указатели
  3. C Структура и функция
  4. Как не проиграть в конкурентном «будущем работы»
  5. Структура С++ с примером
  6. Почему пора улучшить расписание сотрудников
  7. Чтобы снизить риск, повторно проверьте данные сотрудника
  8. Четыре способа усилить взаимодействие с сотрудниками в условиях COVID-19
  9. DVIRC приветствует новых сотрудников, продвигает ценного сотрудника
  10. Категория захватывающих новых технологий:аналитика производительности сотрудников