我有很多类,它们有很多属性,如下所示:
public AnyClass[] car
{
get
{
return this.anyClassField;
}
set
{
this.anyClassField= value;
}
}
在每个 set{} 访问器中,如果值为 null,我需要设置 isEmptyFlag=true。所以我想也许可以以某种方式编写静态扩展来自动执行此操作,或者可能是另一种解决方案?
最佳答案
您可以创建一个通用扩展方法来检查数组是否为 null 或空。
给出以下代码:
public class Foo
{
private anyClass[] anyClassField;
public anyClass[] car
{
get
{
return this.anyClassField;
}
set
{
this.anyClassField = value;
}
}
}
public class anyClass
{
// add properties here ....
}
您可以创建如下扩展方法:
public static class CollectionExtensions
{
public static bool IsNullOrEmptyCollection<T>(this T[] collection)
{
if (collection == null)
return true;
return collection.Length == 0;
}
}
使用代码(不要忘记包含 CollectionExtensions
类的命名空间):
var foo = new Foo();
// returns true
bool isEmpty = foo.car.IsNullOrEmptyCollection();
// add 1 element to the array....
foo.car = new [] { new anyClass() };
// returns false
isEmpty = foo.car.IsNullOrEmptyCollection();
关于c# - 访问器的静态扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19045478/