bool
TryParse
yöntemini "evet" ve "hayır" kabul etme yöntemini geçersiz kılmak istiyorum. Kullanmak istediğim yöntemi biliyorum (aşağıda) ama bool
'un yöntemini nasıl geçersiz edeceğimi bilmiyorum.TryParse'i nasıl geçersiz kılabilirim?
cevap
Statik bir yöntemi geçersiz kılabilirsiniz. Ancak bir uzantı yöntemi yaratabilirsiniz.
public static bool TryParse(this string value, out bool result)
{
// For a case-insensitive compare, I recommend using
// "yes".Equals(value, StringComparison.OrdinalIgnoreCase);
if (value == "yes")
{
result = true;
return true;
}
if (value == "no")
{
result = false;
return true;
}
return bool.TryParse(value, out result);
}
statik sınıfta koy ve çağrı kodunuzu böyle:
string a = "yes";
bool isTrue;
bool canParse = a.TryParse(out isTrue);
Bu mümkün değil.
TryParse
statik bir yöntemdir ve statik yöntemleri geçersiz kılamaz.
Her zaman dizeleri istediğini yapmak için bir uzantısı yöntemi oluşturmak için deneyebilirsiniz: Sen TryParse
geçersiz kılamaz
public static bool ParseYesNo(this string str, out bool val)
{
if(str.ToLowerInvariant() == "yes")
{
val = true;
return true;
}
else if (str.ToLowerInvariant() == "no")
{
val = false;
return true;
}
return bool.TryParse(str, out val);
}
+1 Bu değeri kullanamazsınız. sadece sonuç –
döndürür Bu dize geçerli boolean - gerçek, yanlış, evet, hayır, 1, 0 olup olmadığını bilmek çalışıyorum."Hayır" geçerli bir booledir, ancak false döndürür. – dlras2
@ cyclotis04 - Gereksinimlerinizi daha iyi karşılamak için cevabımı güncelledim. Uzantı yöntemi şimdi daha fazla bool.TryParse() gibi davranır. Şahsen, ben büyük bir yelpaze dışında parametreler değilim. –
. Ancak, kolaylık sağlamak için string
'da bir uzantı yöntemi oluşturabilirsiniz.
public static class StringExtension
{
public static bool TryParseToBoolean(this string value, bool acceptYesNo, out bool result)
{
if (acceptYesNo)
{
string upper = value.ToUpper();
if (upper == "YES")
{
result = true;
return true;
}
if (upper == "NO")
{
result = false;
return true;
}
}
return bool.TryParse(value, out result);
}
}
Ve sonra şöyle kullanılacaktır:
public static class Program
{
public static void Main(string[] args)
{
bool result;
string value = "yes";
if (value.TryParseToBoolean(true, out result))
{
Console.WriteLine("good input");
}
else
{
Console.WriteLine("bad input");
}
}
}
Görünüşe göre bunu öneren tek kişi ben değilim. –
- 1. @ Html.LabelFor şablonunu nasıl geçersiz kılabilirim?
- 2. Geçiş gecikmesini nasıl geçersiz kılabilirim?
- 3. jwt_response_payload_handler yöntemini nerede geçersiz kılabilirim?
- 4. django Modelinde get yöntemini nasıl geçersiz kılabilirim?
- 5. Grails'deki varsayılan hata mesajını nasıl geçersiz kılabilirim?
- 6. RDD'yi Dstream'den nasıl kaldırabilir veya geçersiz kılabilirim?
- 7. Django Yönetici: Bir modeli nasıl geçersiz kılabilirim?
- 8. Tamsayı, dizgi, vb. Gibi temel türleri nasıl geçersiz kılabilirim?
- 9. Django'da standart handler404, handler403, handler500'ü nasıl geçersiz kılabilirim?
- 10. Java'da bir ArrayList'in toString yöntemini nasıl geçersiz kılabilirim?
- 11. Firefox'u varsayılan olarak imleci salt okunur olarak nasıl geçersiz kılabilirim?
- 12. İç içe yerleştirilmiş öğeler XSD'ye neden olur JAXB'de geçersiz sınıf devralma döngüsü istisnası, bağlamaları düzgün bir şekilde nasıl geçersiz kılabilirim?
- 13. Pelikandaki bir sayfa veya makale tarafından kullanılan varsayılan şablonu nasıl geçersiz kılabilirim?
- 14. Bir Flask Modülünde PUT ve DELETE için HTTP yöntemlerini nasıl geçersiz kılabilirim?
- 15. Üyelik esasına göre sınıflandırılmış bir __declspec (dllexport) notu nasıl geçersiz kılabilirim? ELF hedefler üzerinde
- 16. Yetkilendirme özniteliğini nasıl geçersiz kılabilirim? Bu yüzden, üzerinde bir kesme noktası bırakabilirim
- 17. SonataUserBundle şablonları nasıl geçersiz kılar
- 18. Scala'da bir iç sınıf nasıl "geçersiz kılınır"?
- 19. java.net.SocketException: Geçersiz istek: Geçersiz nasıl
- 20. Ckeditor'da bir düğme için işleyici nasıl geçersiz kılınır?
- 21. Her bir liste öğesinin serileştirilmiş adını nasıl bir list <SomeStruct>() in C# içinde geçersiz kılabilirim?
- 22. jQuery'nin $ .ajax içinde XMLHttpRequest kullanımını nasıl geçersiz kılar?
- 23. Aynı adı taşıyan Jython geçersiz kılma yöntemi
- 24. Varsayılan Android temalarını geçersiz kılın
- 25. Haskell'de String/Char için show yöntemini geçersiz kıl
- 26. Eclipse yeniden adlandır/yeniden başlatmayı geçersiz kılma
- 27. == geçersiz kılma == geçersiz kılma
- 28. Django: unique_together hata mesajını nasıl geçersiz kılarsınız?
- 29. Nasıl CursorAdapter dan getItemId (int pos) yöntemini geçersiz kılmak?
- 30. geçersiz sözdizimi, nasıl düzeltebilirim?
Şahsen, ayrıştırma yönteminin 'Null a1>' ı döndürmesini seviyorum, burada dize ayrıştırılamıyorsa dönüş değeri 'null' olur. Bu bir out parametresi ihtiyacını ortadan kaldırır ve güzel çağrı sözdizimini sağlar. , ör. bool a = "blah" .ParseBool()? false; ' – Greg
' Nullables' gerçekten ayrıştırma için kullanışlıdır, ancak mevcut 'TryParse' yöntemini geçersiz kılmaya çalışıyordum. Şimdi kendi başıma yazdığımda, muhtemelen böyle bir şey yapacağım. Ayrıca, 'StringComparison.OrdinalIgnoreCase' kullanıyorum ama sadece temiz görünmesini sağlamak için örneğime koymadım. Son olarak, çıkış türünüz bir "bool" olduğunda, neden 'TryParseBoolean' yönteminizi etiketlersiniz? ('Nullables' seçeneğine geçtiyseniz, bu isme ihtiyacınız varsayalım.) – dlras2
@ cyclotis04 - İyi çağrı. Çıkış parametresi nedeniyle, 'TryParse' ismi gerçekten yeterli olacaktır. – Greg