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
- C-структура
- C-структуры и указатели
- C Структура и функция
- Как не проиграть в конкурентном «будущем работы»
- Структура С++ с примером
- Почему пора улучшить расписание сотрудников
- Чтобы снизить риск, повторно проверьте данные сотрудника
- Четыре способа усилить взаимодействие с сотрудниками в условиях COVID-19
- DVIRC приветствует новых сотрудников, продвигает ценного сотрудника
- Категория захватывающих новых технологий:аналитика производительности сотрудников