Soru Delegeler vs Eylem, C # Func [çoğalt]


Bu sorunun zaten bir cevabı var:

Bu aptalca bir soru gibi görünse de, sadece merak için.

C # 'de zaten iki tanımlı delegemiz var:

Eylem kapsüller herhangi 0 veya daha fazla parametre alan "void" yöntemi.
Func kapsüllü herhangi Belirli bir değer türü döndüren ve 0 veya daha fazla parametre alan yöntem.

Sorum şu: hangi durumlarda özel bir temsilci tanımlamanız önerilir?
Bunu neden yapmak zorundasın?

Şimdiden teşekkürler


22
2017-07-26 18:27


Menşei


Delegeler, Func ve Action'dan önce oradaydı ve birçok yönden geriye dönük uyumluluk aygıtı olarak hizmet ediyorlardı. Ancak, etrafta dolaşamayacağınız, ancak temsilcinizi oluşturduğunuz durumlar var. - T.S.
Şunu izle youtube.com/watch?v=8o0O-vBS8W0 Faydalı olabilir. - RahulD


Cevaplar:


Hiçbiri Func veya Action türler izin out veya ref Parametreler, bu nedenle, aşağıdakileri kullanmanız gerekirse kendi delegelerinizi tanımlamanız gerekir:

public delegate bool TryParse<T>(string s, out T value);

39
2017-07-26 18:30



Evet bu oldukça mantıklı. Bunun neyin mantıklı olup olmadığını bilmiyorum, ama siz sadece Action ve Func'ın tip parametrelerine izin vermediğini fark ettiniz. <br/> Çok teşekkürler! - anfri
Temsilcinizde iki dönüş türü vardır. Bence sen demek istedin: kamu delegesi bool TryParse <T> (string s, out T değeri); Keşke onu değiştirebilseydim, ama 6 karakter kuralı hala geçerli. - user886079
@ user886079 - Evet Demek istediğim bool, Teşekkürler. - Lee


Binlerce durumda, bir işleve başvurmanız / işaret etmeniz gerekecektir (bu nedenle, söz konusu delegelerin herhangi biriyle eşleşmeyen, işlevin gerçek olarak uygulanması, imza dışında, çalışma süresi içinde değişecekse, bir temsilci). Söylemek

Genel delege T MyDel (T t, U u, V v);


2
2017-07-26 18:40



Kesinlikle haklısın. Teşekkürler dostum! - anfri