Главная страница » C# » 31. Свойства
Свойства (Properties) в C# позволяют безопасно управлять доступом к данным объекта, скрывая реализацию и предоставляя контролируемый доступ к переменным. Они похожи на методы, но используются как обычные переменные.
📌 Пример свойства:
class Person
{
public string Name { get; set; } // Автоматическое свойство
}
var person = new Person();
person.Name = "Алексей"; // Установка значения
Console.WriteLine(person.Name); // Алексей
🔹 Name
ведёт себя как поле, но внутри использует специальные методы (геттер и сеттер).
Свойства содержат два метода:
get
– возвращает значение.set
– задаёт новое значение.📌 Пример свойства с логикой внутри set
:
class Person
{
private int age;
public int Age
{
get { return age; }
set
{
if (value > 0) age = value; // Проверка перед установкой
}
}
}
var person = new Person();
person.Age = 25;
Console.WriteLine(person.Age); // 25
person.Age = -5;
Console.WriteLine(person.Age); // 25 (значение не изменилось)
🔹 Геттер возвращает age
, а сеттер проверяет, что возраст неотрицательный.
Если не нужно добавлять логику в get
или set
, можно использовать автоматическое свойство.
📌 Пример:
class Car
{
public string Model { get; set; } // Автоматическое свойство
}
🔹 Компилятор автоматически создаст приватное поле для хранения данных.
get
)Если свойство только для чтения, то можно убрать set
.
📌 Пример:
class Circle
{
public double Radius { get; } // Только для чтения
public Circle(double radius)
{
Radius = radius; // Можно установить только в конструкторе
}
}
🔹 Значение Radius
можно установить только при создании объекта.
set
)Иногда нужно, чтобы свойство можно было только устанавливать, но не читать.
📌 Пример:
class Secret
{
private string _password;
public string Password
{
set { _password = value; } // Можно установить, но нельзя прочитать
}
}
🔹 Можно задать пароль, но нельзя его получить.
Можно задать разные уровни доступа для get
и set
.
📌 Пример:
class BankAccount
{
public string Owner { get; private set; } // Только чтение вне класса
public decimal Balance { get; private set; } // Только внутри класса
public BankAccount(string owner, decimal balance)
{
Owner = owner;
Balance = balance;
}
public void Deposit(decimal amount)
{
if (amount > 0) Balance += amount;
}
}
🔹 Owner
и Balance
можно читать, но изменять только внутри класса.
Свойство может вычислять значение вместо хранения.
📌 Пример:
class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
public double Area => Width * Height; // Вычисляемое свойство
}
🔹 При каждом обращении Area
пересчитывается.
Статические свойства принадлежат классу, а не объекту.
📌 Пример:
class Configuration
{
public static string AppName { get; set; } = "My App";
}
Console.WriteLine(Configuration.AppName); // My App
🔹 Можно обращаться без создания объекта.
✅ Свойства позволяют управлять доступом к данным объекта.
✅ Полные свойства (get/set
) дают гибкость и возможность контроля.
✅ Автоматические свойства упрощают код, когда логика не нужна.
✅ Модификаторы доступа (private
, readonly
, static
) помогают защищать данные.
✅ Вычисляемые свойства удобны, когда значение можно рассчитать.
🚀 Теперь вы знаете, как работать со свойствами в C#!
Student
, в котором есть:Name
(автоматическое).Grade
(оценка), которое можно установить только от 1 до 10.IsExcellent
, которое возвращает true
, если оценка больше 8.📌 Пример решения:
using System;
class Student
{
public string Name { get; set; }
private int _grade;
public int Grade
{
get { return _grade; }
set { if (value >= 1 && value <= 10) _grade = value; }
}
public bool IsExcellent => Grade > 8;
}
class Program
{
static void Main()
{
Student student = new Student { Name = "Анна", Grade = 9 };
Console.WriteLine($"{student.Name} – Отличник? {student.IsExcellent}"); // Анна – Отличник? True
}
}
string message = "Hello, world!";
char quote = '\"';
string path = @"C:\Users\Admin";
Создайте программу, которая выведет:
Путь к файлу: "C:\Program Files\App"
Пример многострочного текста:
Это первая строка
Это вторая строка
using System;
class Program
{
static void Main()
{
string path = @"C:\Program Files\App";
string multiLine = """
Пример многострочного текста:
Это первая строка
Это вторая строка
""";
Console.WriteLine($"Путь к файлу: \"{path}\"");
Console.WriteLine(multiLine);
}
}
Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024-2025 Все права защищены. CodeFor.