检查是否有任何一个对象为空并继续其他
check whether any one of the object is null and proceed with other
我在 class
中有一个如下所示的列表
public class DesignHubProject{
public List<ProjectObject<HydronicSystem>> HydronicSystems { get; set; }
}
这是 ProjectObject<HydronicSystem>
拿着的东西
public class ProjectObject<T>
{
public Guid? Id { get; set; }
public T OriginalObject { get; set; }
public T ModifiedObject { get; set; }
}
现在我需要查找修改后的对象是否为 null 我需要继续处理原始对象,或者如果它不为 null 使用修改后的对象它自己。
为此,我正在循环遍历对象,如下所示
foreach(var item in designHubProject.HydronicSystems)
{
// here i need to check for modified object is null proceed with original object and
// if original object is null proceed with modified object
}
我怎样才能检查这个对象,请问有没有人对此提出任何想法,我将不胜感激。
提前致谢。
一种方法是使用Extension method(对代码重用很有用):
public static class ProjectObjectExtension
{
public static T GetObject<T>(this ProjectObject<T> projectObject)
=> projectObject.ModifiedObject ?? projectObject.OriginalObject;
// or like @MichaelRandall suggests in his answer
public static T GetObjectMichaelRandallWay<T>(this ProjectObject<T> projectObject)
=> EqualityComparer<T>.Default.Equals(projectObject.ModifiedObject, default) ?
projectObject.OriginalObject :
projectObject.ModifiedObject;
}
然后就调用这个方法:
foreach(var item in designHubProject.HydronicSystems)
{
var obj = item.GetObject();
// rest of your code...
}
或者在循环中调用这段代码:
foreach(var item in designHubProject.HydronicSystems)
{
var obj = item.ModifiedObject ?? item.OriginalObject;
// rest of your code...
}
您也可以使用 LINQ .Select()
方法:
foreach(var obj in designHubProject.HydronicSystems.Select(p => p.ModifiedObject ?? p.OriginalObject))
{
// rest of your code...
}
我在 class
中有一个如下所示的列表public class DesignHubProject{
public List<ProjectObject<HydronicSystem>> HydronicSystems { get; set; }
}
这是 ProjectObject<HydronicSystem>
拿着的东西
public class ProjectObject<T>
{
public Guid? Id { get; set; }
public T OriginalObject { get; set; }
public T ModifiedObject { get; set; }
}
现在我需要查找修改后的对象是否为 null 我需要继续处理原始对象,或者如果它不为 null 使用修改后的对象它自己。
为此,我正在循环遍历对象,如下所示
foreach(var item in designHubProject.HydronicSystems)
{
// here i need to check for modified object is null proceed with original object and
// if original object is null proceed with modified object
}
我怎样才能检查这个对象,请问有没有人对此提出任何想法,我将不胜感激。
提前致谢。
一种方法是使用Extension method(对代码重用很有用):
public static class ProjectObjectExtension
{
public static T GetObject<T>(this ProjectObject<T> projectObject)
=> projectObject.ModifiedObject ?? projectObject.OriginalObject;
// or like @MichaelRandall suggests in his answer
public static T GetObjectMichaelRandallWay<T>(this ProjectObject<T> projectObject)
=> EqualityComparer<T>.Default.Equals(projectObject.ModifiedObject, default) ?
projectObject.OriginalObject :
projectObject.ModifiedObject;
}
然后就调用这个方法:
foreach(var item in designHubProject.HydronicSystems)
{
var obj = item.GetObject();
// rest of your code...
}
或者在循环中调用这段代码:
foreach(var item in designHubProject.HydronicSystems)
{
var obj = item.ModifiedObject ?? item.OriginalObject;
// rest of your code...
}
您也可以使用 LINQ .Select()
方法:
foreach(var obj in designHubProject.HydronicSystems.Select(p => p.ModifiedObject ?? p.OriginalObject))
{
// rest of your code...
}