一种方法接受约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