ప్రతినిధులు, చర్యలు మరియు విధులు అన్నీ ఒకే విధమైన భావనపై దృష్టి సారించే C # రకాలు: ఫంక్షన్లు మరియు పద్ధతులకు వేరియబుల్‌లో సూచనలను నిల్వ చేయడం, దానిని సూచించిన పద్ధతిని అమలు చేయడానికి తరువాత పిలుస్తారు. మేము వివిధ రకాల మధ్య తేడాలు మరియు వాటిని ఎలా ఉపయోగించాలో చర్చిస్తాము.

ప్రతినిధులు ఏమిటి?

ప్రతినిధులు తప్పనిసరిగా ఫంక్షన్లకు టైప్-ఇండిపెండెంట్ పాయింటర్లు. ప్రతినిధి కేవలం వేరియబుల్, ఇది ఒక పద్ధతిని సూచిస్తుంది మరియు దానికి “ప్రతినిధులు” అమలు చేస్తుంది. ఇది సూచించే పద్ధతికి తరగతి యొక్క సభ్యుల పద్ధతిగా లేదా బాణం ఫంక్షన్ల వలె అనామకంగా పేరు పెట్టవచ్చు.

ప్రతినిధులకు రెండు ప్రధాన భాగాలు ఉన్నాయి: రకం నిర్వచనం మరియు అమలు. రకం నిర్వచనం రకం స్వాతంత్ర్యాన్ని నిర్ధారిస్తుంది, కాబట్టి మీరు ఫైల్‌ను అంగీకరించే పద్ధతిని మాత్రమే అంగీకరించాలనుకుంటే string మరియు బూల్ విలువను తిరిగి ఇస్తుంది, మీరు దీనిని సాధారణ ఫంక్షన్‌గా నిర్వచించాలి delegate పరామితి మరియు అసలు కోడ్ లేదు.

కాబట్టి, మీరు ఒకే అమలు లేదా ఇన్పుట్ పారామితులను కలిగి ఉన్న ఒక అమలు లేదా అనేక అమలులను వ్రాయవచ్చు, కాని వాస్తవానికి కోడ్ కలిగి ఉంటుంది.

కోడ్‌తో అమలు.

అప్పుడు, మీరు ప్రతినిధి నిర్వచనాన్ని టైప్ పరామితిగా ఉపయోగించవచ్చు, ఇది నిజమైన ఫంక్షన్‌కు సూచించే కొత్త వేరియబుల్‌ను సృష్టిస్తుంది. మీరు ప్రతినిధిని పిలవాలనుకున్నప్పుడు, మీరు దానిని ఒక పద్ధతిగా పిలుస్తారు మరియు తగిన పారామితులను పంపవచ్చు. .NET రన్‌టైమ్ ప్రతినిధి సూచించే పద్ధతిని పరిశీలిస్తుంది మరియు ఆ పద్ధతిని ప్రారంభిస్తుంది.

.NET రన్‌టైమ్ ప్రతినిధి సూచించే పద్ధతిని పరిశీలిస్తుంది మరియు దానిని పిలుస్తుంది.

ఇది తగినంత ఉపయోగకరంగా ఉన్న చోట ఇది ఇప్పటికే చాలా స్పష్టంగా ఉంది: మీకు ఒకే విధమైన ఇన్పుట్ పారామితులను అంగీకరించే బహుళ విధులు ఉంటే, కానీ వేర్వేరు సంస్కరణలను పిలవాలి, ఉదాహరణకు, ఇన్పుట్ ఎన్యూమరేషన్, మీరు ప్రతి ఎన్యూమ్ విలువను ప్రతినిధిగా కేటాయించవచ్చు మరియు పెద్ద స్విచ్ స్టేట్‌మెంట్‌లో తర్కాన్ని నకిలీ చేయకుండా ఉపయోగించండి.

అయినప్పటికీ, ప్రతినిధులు పేరున్న పద్ధతులను సూచించాల్సిన అవసరం లేదు, ఎందుకంటే అనామక ఫంక్షన్లను సూచించేటప్పుడు అవి చాలా ఉపయోగకరంగా ఉంటాయి. బాణం ఫంక్షన్ యొక్క వాక్యనిర్మాణంతో ఇవి సృష్టించబడతాయి, () => {}, ఇది పేరు లేని ఫంక్షన్‌ను నిర్వచిస్తుంది, కాబట్టి “అనామక”. మీరు వారిని సాధారణ ప్రతినిధులుగా ఉపయోగించవచ్చు.

అనామక ఫంక్షన్‌కు సూచించే ప్రతినిధి.

చర్యలు మరియు విధులు నిర్దిష్ట వాదనలు మరియు రిటర్న్ పారామితులతో అప్పగించబడతాయి. చర్యలు ఎన్ని వాదనలు అయినా తిరిగి రావచ్చు void. ఫంక్‌లు ఏవైనా వాదనలు తీసుకోవచ్చు, కానీ ఎల్లప్పుడూ చివరి రకం పరామితి ద్వారా నిర్వచించబడిన విలువను అందిస్తుంది.

వాస్తవానికి, ఇవి సాధారణ రకంతో ప్రీమేడ్ డెలిగేట్ నిర్వచనాలు T. జ Action ఏ రకం లేకుండా అక్షరాలా పొడిగింపుతో ఖాళీ ప్రతినిధి నిర్వచనం void తిరిగి వచ్చే రకం.

ఏ రకమైన లేకుండా చర్య తిరిగి రకపు శూన్యంతో ఖాళీ ప్రతినిధి నిర్వచనం.

మీరు బహుశా దాని గురించి ఆలోచించకుండా చాలా ఫంక్స్‌ను ఉపయోగించారు. వంటి లెక్కలేనన్ని ప్రశ్నలకు మీరు పంపే విధులు ఇవి .Where() అంశాలను ఎంచుకోవడానికి. ముఖ్యంగా ఈ రకమైన ఫంక్షన్లను ప్రిడికేట్స్ మరియు ఎ Predicate ఇది క్రియాత్మకంగా రాయడానికి సమానం Func. అయినప్పటికీ, అవి నిర్దిష్ట పేరును కలిగి ఉండటానికి మించినవి కావు.

మీరు నిజంగా ఫైల్‌ను ఖచ్చితంగా నిర్వచించవచ్చు Func, దానికి ఒక ఫంక్షన్‌ను విలువగా కేటాయించి, దానికి పాస్ చేయండి .Where(), మీరు సాధారణంగా రకం లేదా వేరియబుల్ డెఫినిషన్ లేకుండా ఇన్లైన్ చేస్తారు, కానీ ఇది పూర్తిగా చెల్లుబాటు అవుతుంది.

, దానికి ఒక ఫంక్షన్‌ను విలువగా కేటాయించి, దానిని ఎక్కడ పంపించండి .Where (). “width =” 340 “height =” 134 “onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (ఇది); “onerror =” this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (ఇది); “/>

మీరు ఖచ్చితంగా నిర్వచించవచ్చు Predicate దానికన్నా Func, కానీ కొన్ని విధులు ప్రత్యేకంగా ఒకటి లేదా మరొకటి కోరుకుంటాయి మరియు దురదృష్టవశాత్తు రెండింటి మధ్య అవ్యక్త మార్పిడి లేదు.

ప్రతినిధులు కొన్ని ఇతర ఆసక్తికరమైన లక్షణాలను కలిగి ఉన్నారు. అవి కేవలం వేరియబుల్స్ కాబట్టి, మీరు వాటిని ఇతర రకాల రిఫరెన్స్ లాగా జాబితాలు మరియు నిఘంటువులలో నిల్వ చేయవచ్చు. మీరు జాబితాలోని అన్ని ప్రతినిధులపై మళ్ళించవచ్చు మరియు వారిని ఆహ్వానించవచ్చు.

నువ్వు కూడా మల్టీకాస్ట్ ప్రతినిధులు, మీరు వారిని కలిసి చేర్చవచ్చని చెప్పడానికి ఇది విపరీత పదం. ఉదాహరణకు, కింది ఉదాహరణలో, గ్రీటింగ్ ప్రతినిధి నిర్వచించబడింది, ఇది ఒక పేరు తీసుకొని వినియోగదారుని పలకరిస్తుంది. రెండు అమలులు నిర్వచించబడ్డాయి, Hello హలో, ఇ Goodbye వీడుకోలు చేపడం.

గ్రీటింగ్ ప్రతినిధి పేరు తీసుకొని వినియోగదారుని పలకరిస్తాడు. రెండు అమలులు నిర్వచించబడ్డాయి: హలో మరియు వీడ్కోలు.

కాబట్టి, మీరు వాటిని ప్లస్ సైన్ ఆపరేటర్‌తో పాటు అక్షరాలా జోడించవచ్చు, అయినప్పటికీ ఇది ఒక ప్రతినిధిని ఆశిస్తుందని గుర్తుంచుకోండి మరియు పద్ధతుల సమూహం కాదు, కాబట్టి మీరు ఫంక్షన్ పేరును జతచేయాలి new DelegateDefinition() ఇది సరిగ్గా పని చేయడానికి. ఈ మిశ్రమ ప్రతినిధి రెండు అంశాలను వారు జోడించిన క్రమంలో అమలు చేస్తారు.

సంయుక్త ప్రతినిధి రెండు అంశాలను వారు జోడించిన క్రమంలో అమలు చేస్తారు.

మీరు ప్రతినిధులను తీసివేయవచ్చు, ఇది వారిని జాబితా నుండి తొలగిస్తుంది, అయినప్పటికీ కొన్ని కారణాల వల్ల గుణకారం ఆపరేటర్లు లేరు మరియు విభజన ఇక్కడ అర్ధవంతం కాదు.

Source link