2011-08-31 22 views
6
Ben sadece bu özelliği sihirli gümüş ışık için çalışmaya başladı öğrenmek için Silverlight kullanmak üzere bir uzantısı yöntemi yazdığı için soruyorum nedenidir

farklı olmasının bir nedeni var mı.orada Sistem dll Silverlight ve diğer C# Kütüphaneleri

Örnek

string sentence = "I am a sentence that has some words"; 
sentence.Contains("N"); //would return false, silverlight true 
sentence.Contains("n"); //would return true, silverlight true 

Neden Comparsion vaka insenstive olarak yapar Silverlight için çerçevesinde özel bir sistem dll var mı?

Ben yöntemlerin ton için bu içine çalıştırmak

, bunların farklı hareket ya da sadece genel olarak eksik ya bu tür sinir bozucu.

+0

ben diyelim arasında Sistemde deli farklar olduğunu çoğunlukla sinirlendim \ Program Files (x86) \ Referans Meclisleri \ Microsoft \ Framework \ Silverlight \ v4.0 \ System.dll C: \ Program Dosyalar (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0 \ System.dll Her ikisi de Sistem ve System.String.Contains() farklı davranır, her şeyden daha fazla bir rahatsızlıktır ama koşmaya devam ediyorum Bunun gibi küçük şeylere. –

+1

Bunu standart bir Silverlight projesinde test ettim; –

cevap

3

Sormamın nedeni, Silverlight'ta yalnızca bu özelliğin sihirli bir şekilde gümüş ışığında çalışmaya başladığını bulmak için kullanacağım bir uzantı yöntemi yazdığım içindir.

itibaren 2.0 (2.0, 3.0, 3.5, 4.0, SL 3/4 WP 7.0/7.1) den .NET tüm sürümleri için bir public bool string.Contains(string) yöntem yoktur.

SL versiyonunun sadece SL 3/4 - adresinden listelendiğini unutmamak bir 2.0 çözümünden güncellenmiş olabilir mi? olabilir sonra bunu hesaplama O.

Aksi takdirde, tanımlanmış bir yöntem her zaman bir uzantısı yöntemine göre önceliklidir, böylece uzatma yöntemi (C# 1.2 derleyici uzantısı yöntemleri içermez çünkü biz .NET 1.1 hariç tutabilirsiniz) olarak adlandırılan asla. NET 2.0 için

MSDN belgeler bu şekilde:

Bu yöntem, bir kelime mevcut kültür kullanılarak (harf duyarlı kültür duyarlı) ara gerçekleştirir. Arama, bu dizenin ilk karakter pozisyonunda başlar ve son karakter pozisyonuna devam eder. Bu yöntem, bir sıra (harf duyarlı kültür duyarsız) Karşılaştırma yerine

: olarak (Silverlight dahil)

Diğer tüm versiyonları listelenmiştir. Arama, bu dizenin ilk karakter pozisyonunda başlar ve son karakter pozisyonuna devam eder. Eğer (lütfen tiz-çek) aksi görüyorsanız

, bu bir çerçeve hatası olabilir ... ama ihtiyatla daha basit bir açıklama bekliyorum. c:

+0

beklendiği gibi 'false 'döndürdü. Evet, 3 ve 4 sürümlerinde başladığını gördüm. Ama sanırım sorum, vermediği bir şeydi. Tutarsızlığı korumak için non-silverlight versiyonuna aynı duyarsızlığı gösterir mi? –

+1

@Cubicle er ... yaptılar? En azından MSDN'in durumu budur. –

+1

@Cubicle, MSDN alıntılarını açıkladı; .NET 2.0'da büyük/küçük harfe duyarlı, kültüre duyarlı; ** herşeyde ** bu büyük/küçük harfe duyarlı, kültüre duyarsızdır. Yani her iki durumda da, büyük/küçük harfe duyarlı olmalı –