«extension-methods» etiketlenmiş sorular

Bir uzantı yöntemi, Swift, Visual Basic.NET ve C # gibi bazı dillerin dil özelliğidir. Uzantı yöntemleri, yeni bir türetilmiş tür oluşturmadan, yeniden derlemeden veya orijinal türü başka bir şekilde değiştirmeden mevcut türlere yöntemler "eklemenize" olanak tanır.


18
Farklı () lambda ile?
Doğru, bu yüzden bir numaralandırılabilirim ve ondan farklı değerler almak istiyorum. Kullanarak System.Linq, elbette denilen bir uzantı yöntemi var Distinct. Basit durumda, aşağıdaki gibi hiçbir parametre olmadan kullanılabilir: var distinctValues = myStringList.Distinct(); İyi ve iyi, ama eşitliğini belirtmem gereken sayısız nesne varsa, mevcut tek aşırı yük: var distinctValues = myCustomerList.Distinct(someEqualityComparer); …

8
Hangi yöntem daha iyi performans gösterir: .Any () vs .Count ()> 0?
içinde System.Linqad, şimdi bizim uzatabilirsiniz IEnumerable var olması Herhangi () ve () Sayım uzatma yöntemleri . Son zamanlarda, bir koleksiyonun içinde 1 veya daha fazla öğe olup olmadığını kontrol etmek istersem , uzatma yöntemi tüm öğeler arasında yineleme yapmak zorunda olduğum için, .Any()uzantı yöntemi yerine uzantı yöntemini kullanmam gerektiğini söyledim …

15
Varolan bir statik sınıfa genişletme yöntemleri ekleyebilir miyim?
Ben C # uzatma yöntemlerinin bir hayranıyım, ama Konsol gibi statik bir sınıfa bir uzatma yöntemi ekleyerek başarılı olmadı. Örneğin, Konsol'a 'WriteBlueLine' adlı bir uzantı eklemek istersem, böylece gidebilirim: Console.WriteBlueLine("This text is blue"); Bu 'bu' parametre olarak Konsol ile yerel, genel statik yöntem ekleyerek denedim ... ama zar yok! public …

30
C # için en sevdiğiniz uzantı yöntemleri nelerdir? (Codeplex.com/extensionoverflow)
Kilitli . Bu soru ve cevapları kilitlidir çünkü soru konu dışıdır, ancak tarihsel önemi vardır. Şu anda yeni yanıtları veya etkileşimleri kabul etmiyor. Mükemmel ve favori uzantı yöntemlerinizi yayınladığınız cevapların bir listesini yapalım . Gereksinim, tam kodun kaydedilmesi ve bunun bir örneği ve bunun nasıl kullanılacağına ilişkin bir açıklama yapılmasıdır. …



6
LINQ kullanarak [] dizesini bir kod satırında int [] biçimine dönüştürme
Dize biçiminde tamsayılar bir dizi var: var arr = new string[] { "1", "2", "3", "4" }; Daha fazla itmek için 'gerçek' tamsayılar bir dizi gerekir: void Foo(int[] arr) { .. } İnt atmaya çalıştım ve elbette başarısız oldu: Foo(arr.Cast<int>.ToArray()); Sonra yapabilirim: var list = new List<int>(arr.Length); arr.ForEach(i => list.Add(Int32.Parse(i))); …

9
Genişletme yöntemleri, genel olmayan bir statik sınıfta tanımlanmalıdır
Hatayı alıyorum: Genişletme yöntemleri, genel olmayan bir statik sınıfta tanımlanmalıdır Çizgide: public class LinqHelper İşte Mark Gavells koduna dayanan yardımcı sınıf. Cuma günü bıraktığımda iyi çalıştığından eminim bu hatanın ne anlama geldiği konusunda gerçekten kafam karıştı! using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Linq.Expressions; using System.Reflection; /// <summary> …

4
Zincirleme LINQ uzantı yöntemi çağrılarındaki 'let' anahtar kelimesine eşdeğer kod
C # derleyicileri sorgu anlama özelliklerini kullanarak aşağıdaki gibi kod yazabilirsiniz: var names = new string[] { "Dog", "Cat", "Giraffe", "Monkey", "Tortoise" }; var result = from animalName in names let nameLength = animalName.Length where nameLength > 3 orderby nameLength select animalName; Yukarıdaki sorgu ifadesinde, letanahtar kelime, değerin yinelenen çağrılar …


7
Moq ile Alay Genişletme Yöntemleri
Önceden var olan bir Arayüzüm var ... public interface ISomeInterface { void SomeMethod(); } ve ben bu arayüzü bir mixin kullanarak uzattım ... public static class SomeInterfaceExtensions { public static void AnotherMethod(this ISomeInterface someInterface) { // Implementation here } } Bunu denemek istediğim bir sınıf var ... public class Caller …

6
C # Genişletme Yöntemleriyle Operatör Aşırı Yüklemesi
Ben C # StringBuildersınıfına bir operatör aşırı yük eklemek için uzantı yöntemleri kullanmaya çalışıyorum . Özellikle, verilen StringBuilder sb, sb += "text"eşdeğer olmak istiyorum sb.Append("text"). Aşağıdakiler için bir uzantı yöntemi oluşturmak için sözdizimi şöyledir StringBuilder: public static class sbExtensions { public static StringBuilder blah(this StringBuilder sb) { return sb; } …

8
Razor HtmlHelper Uzantıları (veya görünümler için diğer ad alanları) Bulunamadı
Bu PR veya Beta'da gerçekleşiyorsa Dunno, ancak bir uzantı yöntemi oluşturursam HtmlHelper, Razor destekli bir sayfada tanınmaz: namespace SomeNamespace.Extensions { public static class HtmlExtensions { public static string Foo(this HtmlHelper html) { return "Foo"; } } } Bunu şu <Namespaces>bölüme ekledim Web.config: <pages> <namespaces> <add namespace="System.Web.Mvc" /> <!-- snip --> …

4
Kotlin kaynaklarıyla deneme
tryKotlin'de bir Java -with-resources koduyla eşdeğer yazmaya çalıştığımda, benim için işe yaramadı. Aşağıdakilerin farklı varyasyonlarını denedim: try (writer = OutputStreamWriter(r.getOutputStream())) { // ... } Ama ikisi de çalışmıyor. Bunun yerine ne kullanılması gerektiğini bilen var mı? Görünüşe göre Kotlin dilbilgisinin böyle bir yapı için tanımı yok , ama belki bir …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.