Свойства в C#

Лекции по предмету «Программирование»
Информация о работе
  • Тема: Свойства в C#
  • Количество скачиваний: 3
  • Тип: Лекции
  • Предмет: Программирование
  • Количество страниц: 3
  • Язык работы: Русский язык
  • Дата загрузки: 2014-06-10 15:09:38
  • Размер файла: 16.51 кб
Помогла работа? Поделись ссылкой
Информация о документе

Документ предоставляется как есть, мы не несем ответственности, за правильность представленной в нём информации. Используя информацию для подготовки своей работы необходимо помнить, что текст работы может быть устаревшим, работа может не пройти проверку на заимствования.

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

Да, скачать документ можно бесплатно, без регистрации перейдя по ссылке:

Свойства в C#

Инкапсуляция данных не позволяет напрямую обращаться к закрытым членам класса из другого класса. Для работы с такими данными могут создаваться подпрограммы, входящие в состав класса, и имеющие статус доступа public. (см. пример выше: функции get_num(), get_name() и get_price()). В языке C# предусмотрена возможность вместо таких функций применять так называемые «свойства» (принятый в литературе термин неудачный, может быть следовало бы применять термин «аксессор», но он уже используется к фрагментам get и set). Формат оформления «свойства» имеет вид:
public <тип> <имя свойства>
{
get { return <имя переменной>; } // Получение значения
set { <имя переменной> = value;} // Установка значения
}
Имеется в виду, что переменная, имя которой указано, имеет закрытый доступ. <имя свойства> и <имя переменной> должны быть разными. Часто применяется прием, при котором эти имена отличаются одной или несколькими заглавными или строчными буквами. Например, в примере ниже <имя переменной> price, а <имя свойства> Price. В отличие от функции круглые скобки после имени «свойства» не записываются. Лексеме value присваивается значение вызывающим кодом. Эта лексема является контекстуальным ключевым словом, и, когда входит в состав фрагмента с set, всегда имеет тип, совпадающий с типом «свойства». Например, если объявлен объект tov, то обращение к элементам класса Product с помощью «свойств» будет иметь вид:
double cost = tov.Price; // Использование «свойства» get
tov.Price = 125.50; // Использование «свойства» set
Обратите внимание, форма обращения одинаковая, изменяется только положение лексемы обращения к члену класса (pr.Price) относительно знака равенства.
Ниже приведена программа, которая была приведена выше, но в ней вместо функций get_num(), get_name() и get_price() оформлены «свойства» Prod_Num, Prod_Name и Price. Изменена также форма обращения к элементам класса Product. В этом примере значения только извлекаются из объекта pr класса Product, поэтому свойства set можно было бы не оформлять. Если их пропустить, то при попытке использования «свойства» будет выдано сообщение о том, что соответствующая переменная доступна только для чтения.
using System;
using System.Collections.Generic;
using.Linq;
using System.Text;

namespace Project2
{
class Product // Товар
{
private int prod_num; // Штрих код товара
private string prod_name; // Название товара
private double price; // Цена

public int Prod_Num
{
get { return prod_num; } // Получение значения
set { prod_num = value;} // Установка значения value см ниже
}
public string Prod_Name
{
get { return prod_name; }
set { prod_name = value;}
}
public double Price
{
get { return price; }
set { price = value; }
}
// Конструктор с параметрами
public Product(int Num, string Name, double Pr)
{ // Присвоение значений аргументов переменным класса
prod_num = Num;
prod_name = Name;
price = Pr;
}
}
class Order // Заказ
{
private static double Order_Cost; // Стоимость заказа
private static string Client_Name; // Фамилия клиента
private static int Product_Quan; // Количество

static void Main(string[] args)
{
//
Product tov = new Product(123456, "Молоток", 120.75);
Console.WriteLine("
Введите имя клиента и количество товара
");
//
Client_Name = Console.ReadLine();
Product_Quan= int.Parse(Console.ReadLine());
Order_Cost = tov.Price * Product_Quan;
Console.WriteLine("
Клиент " + Client_Name + " заказал товар
" +
tov.Prod_Name + " (штрих код "+ tov.Prod_Num+") в количестве "+
Product_Quan + "
на сумму " + Order_Cost);
Console.ReadKey(); // Останов экрана пользователя
}
}
}
Свойства могут быть оформлены упрощенно. Просто после имени переменной можно вставить
{ get; set; }
Однако такая форма может применяться только для переменных, объявленных с уровнем доступа public, поэтому не видно разницы между обычным обращением к таким переменным без использования и с использованием «свойств». Преимущество состоит в том, что появляется возможность разграничения доступа для считывания и изменения значения, а также можно выполнять предварительные вычисления. Так, если записать:
public int x{ get; private set; }
В этом случае переменная x доступна только для чтения.