Member
Member - C# da member bu class yoki struct tarkibidagi element bo‘lib, u ma’lumot va funksionallikni ifodalaydi.
Member turlari
- Fields
- Properties
- Methods
- Constructor
- Finalizer
- Event
- Indexer
- Nested type
- Constants
- Operators
Misol
using System;
class Car
{
// **1. Field (maydon)**
private string model;
// **2. Property (xususiyat)**
public string Model
{
get { return model; }
set { model = value; }
}
// **3. Constructor (konstruktor)**
public Car(string model)
{
this.model = model;
}
// **4. Method (metod)**
public void Honk()
{
Console.WriteLine("Beep Beep!");
}
// **5. Event (voqealar)**
public event Action OnStart;
public void Start()
{
Console.WriteLine("Mashina ishga tushdi!");
OnStart?.Invoke(); // Event chaqirilmoqda
}
// **6. Indexer (indeksator)**
private int[] speeds = new int[5];
public int this[int index]
{
get { return speeds[index]; }
set { speeds[index] = value; }
}
}
class Program
{
static void Main()
{
// Obyekt yaratish
Car myCar = new Car("Tesla");
// Property dan foydalanish
Console.WriteLine("Model: " + myCar.Model);
// Method chaqirish
myCar.Honk();
// Event ga hodisa qo‘shish
myCar.OnStart += () => Console.WriteLine("Event: Mashina harakatga tayyor!");
myCar.Start();
// Indexer orqali massivga murojaat
myCar[0] = 100;
Console.WriteLine("Birinchi tezlik: " + myCar[0]);
}
}
Natija
Model: Tesla
Beep Beep!
Mashina ishga tushdi!
Event: Mashina harakatga tayyor!
Birinchi tezlik: 100
Field
Field - bu class yoki struct ichida bevosita e'lon qilingan har qanday turdagi o‘zgaruvchi. Fieldlar o‘zlari joylashgan type'ning a'zolari hisoblanadi.
Misol
using System;
public class CalendarEntry
{
private DateTime _date; // Private field
public DateTime Date // Property with validation
{
get => _date;
set
{
if (value.Year > 1900 && value.Year <= DateTime.Today.Year)
_date = value;
else
throw new ArgumentOutOfRangeException(nameof(Date));
}
}
public void SetDate(string dateString) => Date = Convert.ToDateTime(dateString);
}
class Program
{
static void Main()
{
CalendarEntry entry = new CalendarEntry();
entry.SetDate("2000-05-15");
Console.WriteLine("Belgilangan sana: " + entry.Date.ToString("yyyy-MM-dd"));
}
}
Natija
Belgilangan sana: 2000-05-15
Property
Property - bu ma’lumot maydonining (field) qiymatini o‘qish, yozish yoki hisoblash uchun ishlatiladigan a’zo (member). Propertylar jamoat (public) ma’lumot a’zolari kabi ko‘rinadi, lekin aslida maxsus metodlar (accessors) yordamida amalga oshiriladi.
Misol
using System;
public class Person
{
public string? FirstName; // Public field
}
class Program
{
static void Main()
{
Person person = new Person();
person.FirstName = "Ali";
Console.WriteLine("Ism: " + person.FirstName);
}
}
Natija
Ism: Ali
Method
Method - Method – bu bir nechta operatorlarni o‘z ichiga olgan kod blokidir. Dastur metodni chaqirish (call) orqali undagi operatorlarni bajaradi va agar kerak bo‘lsa, argumentlarni uzatadi.C# da har bir bajariladigan buyruq biror metod kontekstida ishlaydi. Metodlar dastur logikasini modullarga ajratish, qayta ishlatish, va tartibli kod yozish uchun ishlatiladi.
Polymorphism — bu "ko‘p shakllilik" degan ma’noni anglatadi. Poly — "ko‘p", morph — "shakl" degan ma’noni bildiradi.
Polymorphism obyektga yo‘naltirilgan dasturlashning (OOP) asosiy tamoyillaridan biri bo‘lib, bir xil nomli metodlarni turli ko‘rinishda yaratish imkonini beradi. Bu metodlar bir xil class ichida turli imzoga ega bo‘lishi yoki merosxo‘r (derived) classlarda qayta yozilishi mumkin.
Polymorphism turlari
- Method Overloading (Metod yuklanishi) – Bir class ichida bir xil nomli, lekin turli parametrlar bilan e’lon qilingan metodlar.
- Method Overriding (Metodni qayta yozish) – Merosxo‘r class o‘zida ota classdagi metodni qayta aniqlaydi.
Misol(Overloading)
class MathOperations
{
public int Add(int a, int b) => a + b;
public double Add(double a, double b) => a + b;
}
class Program
{
static void Main()
{
MathOperations math = new MathOperations();
Console.WriteLine(math.Add(2, 3)); // 5
Console.WriteLine(math.Add(2.5, 3.5)); // 6.0
}
}
Natija
5
6.0
Misol(Overriding)
class Animal
{
public virtual void MakeSound() => Console.WriteLine("Hayvon ovoz chiqardi");
}
class Dog : Animal
{
public override void MakeSound() => Console.WriteLine("It: Vov-vov!");
}
class Program
{
static void Main()
{
Animal myPet = new Dog();
myPet.MakeSound(); // It: Vov-vov!
}
}
Natija
It: Vov-vov!
Constructor
Constructor - bu class yoki struct'ning obyektini yaratishda avtomatik chaqiriladigan maxsus metod.Class yoki struct turli argumentlar qabul qiluvchi bir nechta konstruktorlarga ega bo‘lishi mumkin.Konstruktorlar obyekt yaratishda boshlang‘ich qiymatlarni to‘g‘ri sozlash va obyektni yaroqli holatda yaratish imkonini beradi.
Misol
using System;
public class Person
{
private string last;
private string first;
public Person(string lastName, string firstName)
{
last = lastName;
first = firstName;
}
public void Display()
{
Console.WriteLine($"Ism: {first}, Familiya: {last}");
}
}
class Program
{
static void Main()
{
Person person = new Person("Aliyev", "Javohir");
person.Display();
}
}
Natija
Ism: Javohir, Familiya: Aliyev
Readonly
Readonly - .NET dasturlash tilida readonly kalit so‘zi o‘zgaruvchilar va xususiyatlarning qiymatini o‘zgartirishni cheklash uchun ishlatiladi. U maydonlar (fields) va xususiyatlar (properties) uchun qo‘llaniladi.
Readonly xususiyatlari
- Faqat e’lon qilinganda yoki konstruktor ichida o‘rnatiladi.
- Dastur ishlash vaqtida o‘zgartirib bo‘lmaydi.
- const dan farqli ravishda runtime (ishlash vaqti) da o‘rnatilishi mumkin.
Misol
using System;
class Car
{
public readonly string Model;
public Car(string model)
{
Model = model; // Faqat konstruktor ichida o‘rnatish mumkin
}
public void Display()
{
Console.WriteLine($"Car model: {Model}");
}
}
class Program
{
static void Main()
{
Car myCar = new Car("Tesla Model S");
myCar.Display();
// myCar.Model = "BMW"; // Xato: readonly maydonni o‘zgartirib bo‘lmaydi!
}
}
Natija
Car model: Tesla Model S
Top comments (0)