Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C#_v2.4.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
127 Кб
Скачать
☆

20. Понятие «Классы». Спецификаторы

Классы – содержат данные, зависящие от свойств объектов класса, функции, определяющие их поведение, а также события, на которые можно реагировать объект класса. Все классы библиотеки .NET имеют одного общего предка – object и ориентированы в единую иерархическую структуру.

Внутри нее классы логически сгруппированы в так называемые пространства имен, которые служат для упорядочения имен классов и предотвращение конкретных имен.

Любая платформа .NET использует пространство System. В нем отражены классы, которые обеспечивают базовую функциональность

using System

using System.WindowsForm

namespace WindowsFormApplication1

{ public partial class Form1: Form

{ public Form

using System

namespace ConsoleApplication;

{

class Class1

{static void Main ()

{Console.WriteLine (“Введите число”);

string s=Console.ReadLine ();

Console.WriteLine (“Вы ввели ”+s);

}

}

}

}

}

21. Методы класса

Использование и создание методов в программе на С# во многом схоже на подход из С++. Рассмотрим это поподробней. В C# любой метод является методом какого-либо класса. Например:

using System;

class Man{

public string name;

public int age;

public Man(string n,int a){

name = n;

age = a;

}

public void Show(){

Console.WriteLine("Имя = "+name+"\tВозраст = "+age);

}

}

class Sample

{

static void Main()

{

try{

Man obj = new Man("Fire",56);

obj.Show();

}

catch(Exception er){

Console.WriteLine(er.Message);

}

Console.Read();

}

}

В данном примере у нас есть класс Man с методом Show и конструктором. Возле Show стоит спецификатор доступа public. Если его не указать по умолчанию будет поставлен private и вызвать его из класса Sample не получится. Для возврата значений и выхода из метода также как и в С++ используется оператор return. Принцип использования демонстрируется в примере:

using System;

class SomeClass{

public float x;

public float y;

public SomeClass(float a,float b)

{

x = a;

y = b;

}

public float Summa(){

return x+y;

}

public void Test(float t){

if(t == 0){

Console.WriteLine("Для деления был передан 0");

return;

}

Console.WriteLine(" Результат = ",(x+y)/t);

}

}

class Sample

{

static void Main()

{

try{

SomeClass obj = new SomeClass(2,3);

Console.WriteLine("Сумма равна = "+obj.Summa());

obj.Test(0);

}

catch(Exception er){

Console.WriteLine(er.Message);

}

Console.Read();

}

}

Передача параметров

В C# есть два способа передачи параметров методуа по значению, и по ссылке. В первом случае внутрь метода попадает не оригинальная переменная. а её копия, которая разрушается при выходе из метода не оказывая влияния на оригинальную переменную. При передаче методу значений обычных типов, таких как int, double и т.д. используется передача по значению. Следовательно, при изменение параметра, никакого влияния на оригинальную переменную не происходит. Например:

using System;

class SomeClass{

public float x;

public SomeClass(float a){

x = a;

}

public void TryToSetTo99(float res){

res = 99;

}

public float Mult(float res){

return res*x;

}

}

class Sample

{

static void Main()

{

try{

SomeClass obj = new SomeClass(2);

float test = 5;

obj.TryToSetTo99(test);

Console.WriteLine(test);

Console.WriteLine(obj.Mult(test));

}

catch(Exception er){

Console.WriteLine(er.Message);

}

Console.Read();

}

}

Легко заметить, что переменная test не изменила своё значение после передачи её в TryToSetTo99.Теперь рассмотрим второй способ передачи параметров - по ссылке. В этом случае передается не копия переданного параметра, а ссылка на оригинальный объект, что позволяет модифицировать оригинал. По ссылке всегда автоматически передаются объекты классов. Например:

using System;

class SomeClass{

public int x;

public int y;

}

class SomeClass2{

public void Set(SomeClass obj){

obj.x=1;

obj.y=2;

}

}

class Sample

{

static void Main()

{

try{

SomeClass obj = new SomeClass();

SomeClass2 obj2 = new SomeClass2();

obj.x = 8;

obj.y = 9;

obj2.Set(obj); // передаётся по ссылке

Console.WriteLine(obj.x+" "+obj.y);

}

catch(Exception er){

Console.WriteLine(er.Message);

}

Console.Read();

}

}

Как изменить значение для переменной типа int или double при передаче её внутрь метода будет показано в следующем разделе. В С#, как и в С++. можно перегружать методы. Правила при перегрузке такие же, как и в С++.

Статические методы

Статическим методом называется метод с модификатором static. Разница между обычным методом класса и таким состоит в том, что метод с static модификатором может быть вызван без создания какого-либо объекта класса. Например:

using System;

class Figure{

public static void Draw(){

Console.WriteLine("FigureDraw");

}

}

class Sample

{

static void Main()

{

try{

Figure.Draw();

}

catch(Exception er){

Console.WriteLine(er.Message);

}

Console.Read();

}

}

Отличия static - методов от обычных:

  1. Методы с модификатором static не имеют ссылки this.

  2. Метод с модификатором static, может непосредственно( без указания имени объекта ) вызывать только другой статический метод.

  3. Метод с модификатором static имеет только прямой доступ к static - данным.

Например:

using System;

class Figure{

public int a;

public void Line(){

Console.WriteLine("*************");

}

public static void Draw(){

a = 78

Console.WriteLine("FigureDraw");

Line();

}

public static void Draw2(Figure t){

t.Line();

}

}

class Sample

{

static void Main()

{

try{

Figure.Draw();

Figure.Draw2();

}

catch(Exception er){

Console.WriteLine(er.Message);

}

Console.Read();

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]