一種方法接受約7個字符串參數,並且需要檢查它們是否爲空 對它們所做的基本方法很簡單!string.IsNullOrWhitespace(param1),同樣是 有沒有更好或更聰明的方法? 另外,如果有幫助的話,我可能會將參數包裝在一個對象中!以任何更好的方式檢查字符串null C#
回答
您可以將字符串傳遞到列表中,然後檢查像這樣:
if(List.All(x=>string.IsNullOrWhiteSpace(x)))
{
}
如果你正在尋找任何回報的一個字符串是不是空的,比這是一個很好的解決方案:
public static bool AreAllStringsEmpty(params string[] array)
{
return array.All(str => String.IsNullOrWhiteSpace(str));
}
public static bool AreAllStringsFull(params string[] array)
{
return array.All(str => !String.IsNullOrWhiteSpace(str));
}
public static bool AreAtleastOneStringFull(params string[] array)
{
return array.Any(str => !String.IsNullOrWhiteSpace(str));
}
而不是像這樣使用:
AreAllStringsFull(param1, param2, ...);
備註:您可以添加擴展方法來簡化過程,但它仍然是樣板代碼。
這隻適用於**全** **空/空的情況。如果他想單獨檢查它們,以便它們都有某種東西,那麼這將會失敗。 (str1和str2 = empty,strN = something然後檢查通過) –
@RonBeyer,編輯。 –
如果沒有需要檢查的空白只是比較空:
if (param1 != null)
按照慣例,如果輸入的要求是不爲空,你會拋出一個ArgumentNullException:
if (param1 == null)
throw new ArgumentNullException("param1");
你可以建立一個使用反射的擴展方法來一次檢查你的整個對象。但是,由於這會變得非常昂貴,因此可以使用FastMember之類的庫來最大限度地減少後續對象檢查的反射成本。
using System.Linq;
using FastMember;
namespace Utilities
{
public static class CheckStringProperties
{
public static bool AreAnyStringPropertiesNull<T>(this T model) where T : class
{
var accessor = TypeAccessor.Create(model.GetType());
return AreAnyStringPropertiesNull(model, accessor);
}
public static bool AreAnyStringPropertiesNull<T>(this T model) where T : class
{
var accessor = TypeAccessor.Create(model.GetType());
return AreAllStringPropertiesNull(model, accessor);
}
private static bool AreAnyStringPropertiesNull<T>(T model, TypeAccessor accessor)
{
foreach (var strng in GetStringProperties(accessor))
{
if (string.IsNullOrWhiteSpace(strng))
return true;
}
return false;
}
private static bool AreAllStringPropertiesNull<T>(T model, TypeAccessor accessor)
{
foreach (var strng in GetStringProperties(accessor))
{
if (!string.IsNullOrWhiteSpace(strng))
return true;
}
return false;
}
private static List<Member> GetStringProperties(TypeAccessor accessor)
{
return accessor.GetMembers().Where(x => x.Type == typeof(string)).ToList();
}
}
}
然後你可以在你的類上調用擴展方法。
var containsNulls = classInstance.AreAnyStringPropertiesNull();
var areAllNull = classInstance.AreAllStringPropertiesNull();
如果任何null
會爲你一個假:
bool CheckAnyNull(params string[] strs)
{
foreach (var str in strs)
{
if (strs.IsNullOrWhiteSpace(str))
return true;
}
return false;
}
如果要檢查它們是否所有null
:
bool CheckAllNull(params string[] strs)
{
foreach (var str in strs)
{
if (!strs.IsNullOrWhiteSpace(str))
return false;
}
return true;
}
如果你想要一個特定的量null
字符串:
int CheckNullCount(params string[] strs)
{
int count;
foreach (var str in strs)
{
if (strs.IsNullOrWhiteSpace(str))
count++;
}
return count;
}
他們都然後可以這樣調用:
CheckAnyNulls(str1, str2, str3, str4, str5, str6, str7);
CheckAllNulls(str1, str2, str3, str4, str5, str6, str7);
int nullStrs = CheckNullCount(str1, str2, str3, str4, str5, str6, str7);
或:
var strs = new string[7];
// populate the strs array.
CheckAnyNulls(strs);
CheckAllNulls(strs);
int nullStrs = CheckNullCount(strs);
- 1. 如何更好地檢查Request.QueryString字符串參數爲null?
- 2. 有沒有更好的方法來檢查字符串中的任何數字?
- 3. Struts2,字符串null檢查
- 4. 檢查null,哪個更好? 「空==」 或 「== NULL」
- 5. 如何以更好的方式編寫這個查詢字符串?
- 6. 更好的方法來查找字符串中的模式?
- 7. 更好的方式來寫這個貓鼬查詢字符串?
- 8. 可以通過更好的方式完成對null的默認檢查嗎?
- 9. 檢查字符串可以在C
- 10. 如何檢查C#變量是否爲空字符串「」或null?
- 11. 檢查字符串1的任何部分字符串2
- 12. 好的方法來檢查一個字符串是否以正則表達式字符串結尾
- 13. 通過正則表達式搜索字符串?任何更好的方法?
- 14. 如何檢查目標C中的字符數組爲null null
- 15. 如何以更好的方式檢查代碼?
- 16. 以更好的方式在字符前切出一個字符串php
- 17. 在android中檢查null字符串
- 18. 檢查一個字符串是否以列表中的任何字符開頭
- 19. 檢查字符串x是否等於字符串中的任何字符串[]
- 20. C++檢查字符串
- 21. 檢查數字符串的任何地方
- 22. 我可以檢查一個字符串是否以null結尾,但不檢查它是否以NULL結尾
- 23. 檢查字符串格式
- 24. 字符串格式檢查
- 25. 檢查任何列包含字符從一個字符串
- 26. 最好的方法來檢查null?
- 27. 如何檢查字符串是否以C中的某個字符串開頭?
- 28. 更好的比較字符串方法
- 29. 字符串替換更好的方法
- 30. .Net:有沒有更好的方法來檢查null或空字符串的對象的屬性?
如果你考慮性能問題,那麼'str.Length == 0'是檢查null的最快方法 – gypsyCoder
@gypsyCoder這是檢查空字符串而不是null的最快方法,因爲它會拋出一個'NullReferenceException '如果它是'null'。 – juharr
如果str爲空,會不會崩潰? – Derek