Anonim metod C# Anonim usul


Download 51.47 Kb.
bet2/2
Sana18.11.2023
Hajmi51.47 Kb.
#1785309
1   2
Bog'liq
Anonim metod

using System;

class GFG {

public delegate void petanim(string pet);

// Asosiy metod
static public void Main()
{

// Bir parametrli anonim metod
petanim p = delegate(string mypet)
{
Console.WriteLine("My favorite pet is: {0}",
mypet);
};
p("Dog");
}
}

My favorite pet is: Dog

Bu usul shuningdek, inline delegate sifatida ham tanilgan.


Ushbu usul yordamida siz alohida usullarni yozmasdan delegat ob'ektini yaratishingiz mumkin.
Bu usul tashqi usulda mavjud o'zgaruvchiga kirishi mumkin. Bunday turdagi o'zgaruvchilar tashqi o'zgaruvchilar deb nomlanadi. Quyidagi misolda ko'rsatilganidek, fav tashqi o'zgaruvchidir.
// anonim funksiyani kirish o’zgaruvchisi
// tashqi usulda
using System;

class GFG {

// delegate yaratish
public delegate void petanim(string pet);

// Main method


static public void Main()
{

string fav = "Rabbit";

// Anonymous method with one parameter
petanim p = delegate(string mypet)
{
Console.WriteLine("My favorite pet is {0}.",
mypet);

// Accessing variable defined


// outside the anonymous function
Console.WriteLine("And I like {0} also.", fav);
};
p("Dog");
}
}


My favorite pet is Dog.
And I like Rabbit also.

Bu usulni delegatni parametr sifatida qabul qiladigan boshqa usulga o'tkazishingiz mumkin. Quyidagi misolda ko'rsatilganidek: // C# program to illustrate how an


// anonymous method passed as a parameter
using System;

public delegate void Show(string x);

class GFG {

// identity method with two parameters


public static void identity(Show mypet,
string color)
{
color = " Black" + color;
mypet(color);
}

// Main method


static public void Main()
{

// Here anonymous method pass as


// a parameter in identity method
identity(delegate(string color) {
Console.WriteLine("The color"+
" of my dog is {0}", color); },
"White");
}
}

Anonim usullarda sizga parametrlar ro'yxatini olib tashlashga ruxsat beriladi, ya'ni siz anonim usulni delegatga aylantirishingiz mumkin.


Anonim usul bloki anonim usuldagi parametrlar doirasini bildiradi.
Anonim usulda goto, break yoki continue kabi o'tish iboralari mavjud emas.
Anonim usul xavfli kodga kira olmaydi.
Anonim usul tashqi doiraning kirish, ref va chiqish parametrlariga kira olmaydi.
Is operatorining chap tomonida anonim usuldan foydalana olmaysiz.
Hodisa ishlovchisi sifatida anonim usuldan ham foydalanishingiz mumkin.
Misol:
// C# program to illustrate how an
// anonymous method use as a
// event handler
MyButton.Click += delegate(Object obj, EventArgs ev)
{
System.Windows.Forms.MessageBox.Show("Complete without error...!!");
}

Nima uchun C# da anonim usuldan foydalanish kerak?


Anonim usullar kod blokini delegat parametri sifatida o'tkazish texnikasini ta'minlaydi. Anonim usullar - bu nomsiz usullar, faqat tana. Anonim usulda qaytarish turini belgilashingiz shart emas; u usul tanasi ichidagi qaytish bayonotidan kelib chiqadi.
Misol bilan C# da anonim nima?
C# da anonim tip bizga nomni ko'rsatmasdan tur yaratish imkonini beradi. Masalan, var sub'ekti = new {Ism = "Matematika", Kod = 123}; Bu erda sub'ekt ikki xususiyatni o'z ichiga olgan anonim turdagi o'zgaruvchidir: Ism va Kod .
Anonim usul nima?
Anonim usul - bu identifikatorga nom bilan bog'lanmagan holda belgilangan yoki chaqiriladigan funksiya yoki pastki dastur. Anonim usullardan C# va PHP kabi ko'plab zamonaviy dasturlash tillari qo'llaniladi.

Anonim usulni yozish


Anonim usullar delegat kalit so'zi bilan delegat misolini yaratish bilan e'lon qilinadi. Masalan,

delegat void NumberChanger(int n);


...
NumberChanger nc = delegat (int x) {
Console.WriteLine("Anonim usul: {0}", x);
};
Kod bloki Console.WriteLine("Anonim usul: {0}", x); anonim usulning asosiy qismidir.

Delegat anonim usullar bilan ham, nomli usullar bilan ham xuddi shu tarzda, ya'ni usul parametrlarini delegat ob'ektiga o'tkazish orqali chaqirilishi mumkin.

Masalan,

nc(10);
Misol


Quyidagi misol − tushunchasini ko'rsatadi

Jonli demo


tizimdan foydalanish;

delegat void NumberChanger(int n);


nom maydoni DelegateAppl {
Class TestDelegate {
statik int soni = 10;
umumiy statik bekor AddNum(int p) {
num += p;
Console.WriteLine("Nomlangan usul: {0}", num);
}
umumiy statik bekor MultNum(int q) {
num *= q;
Console.WriteLine("Nomlangan usul: {0}", num);
}
umumiy statik int getNum() {
raqamni qaytarish;
}
statik void Main(string[] args) {
// anonim usul yordamida delegat misollarini yarating
NumberChanger nc = delegat (int x) {
Console.WriteLine("Anonim usul: {0}", x);
};
//anonim usul yordamida delegatni chaqirish
nc(10);
//atlangan usullar yordamida delegatni instantsiyalash
nc = yangi NumberChanger(AddNum);
//ko'rsatilgan usullardan foydalangan holda delegatni chaqirish
nc(5);
//delegatni boshqa nomli usullar yordamida instantsiyalash
nc = yangi NumberChanger (MultNum);
//ko'rsatilgan usullardan foydalangan holda delegatni chaqirish
nc(2);
Console.ReadKey();
}
}
}
Yuqoridagi kod kompilyatsiya qilinganda va bajarilganda, u quyidagi natijani beradi -

Anonim usul: 10


Nomlangan usul: 15
Nomlangan usul: 30
Download 51.47 Kb.

Do'stlaringiz bilan baham:
1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling