2009-06-05 12 views
11

ArrayUtil adlı bir yardımcı program sınıfında FormattedJoin() adlı bir yöntem var. FormattedJoin()'u sadece Join() olarak yeniden adlandırmayı denedim çünkü bu davranış, .NET'in string.Join() modeline benziyor, dolayısıyla aynı adı kullanmak anlamlı geldi.Neden Visual Studio bir yöntemi yeniden adlandırmaya çalıştığımda "derleyici oluşturulmuş başvurular" olduğunu söylüyor?

This member may have compiler generated references
with the same name. Refactoring the member will not
update these references, which may introduce semantic
changes and/or build errors into your code.

Ben sadece iyi yöntemi yeniden adlandırabilirsiniz ve hiçbir derleme hataları veya derleyici uyarılarını neden olur: Ben yöntemini yeniden adlandırmak için Visual Studio kullanmaya çalıştığınızda Ancak, ben bu uyarıyı olsun. Bunu yapmak güvenli midir yoksa bu isimle bir yöntemden kaçınmalı mıyım?

bu hatayı gördükten sonra .NET " ArrayUtil.Join()" bir iç veya bunların hiçbirini varyasyon ve bunun gibi görünmüyor olsaydı öğrenmek olabilir görmek için Reflector açtı. Yine de bir " ArrayUtil.Join()" yöntemi olsa bile, farklı bir ad alanı bu sorunu çözmez mi?

cevap

15

Bu, LINQ ile ilgilidir.

C# derleyicisi, LINQ sorgusundaki "Birleştir" anahtar sözcüğünü kullandığınızda, Birleştir adlı adlı yönteme çağrı üretecektir. Genellikle çağrı, LINQ uzantısı yöntemlerinden birine çözülür. Ancak, kendi yönteminizi LINQ yöntemleri ile aynı imza ile tanımlarsanız, derleyici sizinkileri kullanır. Uyarının amacı, derleyici tarafından oluşturulan yöntem çağrılarının değiştirilmeyeceğine dair ek bir geri yükleme işlemi yapılacağını bildirmektir.

Özel bir LINQ sağlayıcısı yazmadığınız sürece, hatayı yok saymak güvenlidir.

+3

Vay, bu hata hiç de açıklığa kavuşmuyor! Neler olduğunu bildiğin için teşekkür ederim. Gerçekten kötü bir şey yaptığımı düşündüm. –

İlgili konular