如何检查对象的一个值是否为空
How to check if one value of an object is null
我有一个包含多个字符串的对象。
有没有办法检查其中一个值是否为空或是否设置了所有值?
或者我必须这样做:
if (!string.IsNullOrWhiteSpace(object.string1) || !string.IsNullOrWhiteSpace(object.string2) || !string.IsNullOrWhiteSpace(object.string3))
{
}
您可以使用 for 循环遍历所有字符串并检查它们是否为空。
编辑:您可能必须将所有字符串添加到数组或列表中,因为它们都有不同的名称,如 string1、string2 和 string3
您可以将所有字符串收集到一个数组中,然后 运行 .Any()
方法:
if (new[] { obj.string1, obj.string2, obj.string3 }.Any(string.IsNullOrWhiteSpace))
{
}
或者,您可以使用反射(这会影响代码的性能)扫描对象的所有字符串并检查您的条件:
var anyEmpty = obj.GetType().GetProperties()
.Any(x => x.PropertyType == typeof(string)
&& string.IsNullOrWhiteSpace(x.GetValue(obj) as string));
如果你经常这样做,你可以写一个方法来检查它:
public static class Ensure
{
public static bool NoneNullOrWhitespace(params string?[] items)
{
return !items.Any(string.IsNullOrWhiteSpace);
}
}
对于你的情况,你会这样称呼:
if (Ensure.NoneNullOrWhitespace(object.string1, object.string2, object.string3))
{
...
}
如果您可以选择为您的对象定义 class,您可以让 class 本身处理“所有不为空或空白的字符串”-检查:
public class MyObject
{
public string String1 { get; set; }
public string String2 { get; set; }
public string String3 { get; set; }
public bool StringsAreNotNullOrWhiteSpace => !Strings.Any(string.IsNullOrWhiteSpace);
private string[] Strings => new[] { String1, String2, String3 };
}
并像这样使用它:
var myObject = new MyObject();
//Populate myObject
if (myObject.StringsAreNotNullOrWhiteSpace)
{
//Add myObject to list
}
(StringsAreNotNullOrWhiteSpace
的实现基本上是 @mickl 在他们的第一个建议中所做的,但返回相反的 bool 值。)
我有一个包含多个字符串的对象。
有没有办法检查其中一个值是否为空或是否设置了所有值?
或者我必须这样做:
if (!string.IsNullOrWhiteSpace(object.string1) || !string.IsNullOrWhiteSpace(object.string2) || !string.IsNullOrWhiteSpace(object.string3))
{
}
您可以使用 for 循环遍历所有字符串并检查它们是否为空。
编辑:您可能必须将所有字符串添加到数组或列表中,因为它们都有不同的名称,如 string1、string2 和 string3
您可以将所有字符串收集到一个数组中,然后 运行 .Any()
方法:
if (new[] { obj.string1, obj.string2, obj.string3 }.Any(string.IsNullOrWhiteSpace))
{
}
或者,您可以使用反射(这会影响代码的性能)扫描对象的所有字符串并检查您的条件:
var anyEmpty = obj.GetType().GetProperties()
.Any(x => x.PropertyType == typeof(string)
&& string.IsNullOrWhiteSpace(x.GetValue(obj) as string));
如果你经常这样做,你可以写一个方法来检查它:
public static class Ensure
{
public static bool NoneNullOrWhitespace(params string?[] items)
{
return !items.Any(string.IsNullOrWhiteSpace);
}
}
对于你的情况,你会这样称呼:
if (Ensure.NoneNullOrWhitespace(object.string1, object.string2, object.string3))
{
...
}
如果您可以选择为您的对象定义 class,您可以让 class 本身处理“所有不为空或空白的字符串”-检查:
public class MyObject
{
public string String1 { get; set; }
public string String2 { get; set; }
public string String3 { get; set; }
public bool StringsAreNotNullOrWhiteSpace => !Strings.Any(string.IsNullOrWhiteSpace);
private string[] Strings => new[] { String1, String2, String3 };
}
并像这样使用它:
var myObject = new MyObject();
//Populate myObject
if (myObject.StringsAreNotNullOrWhiteSpace)
{
//Add myObject to list
}
(StringsAreNotNullOrWhiteSpace
的实现基本上是 @mickl 在他们的第一个建议中所做的,但返回相反的 bool 值。)