질문 this에 루프에 의해 꼬리 재귀 호출을 대체하려고 :부모 발견 재귀 함수가
public static T FindParent<T>(DependencyObject child) where T : DependencyObject
{
DependencyObject parentObject = VisualTreeHelper.GetParent(child);
if (parentObject == null) return null;
var parent = parentObject as T;
if (parent != null)
{
return parent;
}
return FindParent<T>(parentObject);
}
ReSharper에서 대신 재귀 루프로 변환 나 제공을이처럼 수행 이 : 이제
public static T FindParent<T>(DependencyObject child) where T : DependencyObject
{
while (true)
{
DependencyObject parentObject = VisualTreeHelper.GetParent(child);
if (parentObject == null) return null;
var parent = parentObject as T;
if (parent != null)
{
return parent;
}
child = parentObject;
}
}
I가 확장 된 그룹 및 모든 하위 그룹 붕괴 기능 :
,691을불행하게도 Reshaper가 난 그냥 while
문을 사용하여 같은 방식으로 변환하는 방법을 알아낼 수 없습니다 :(
private void MenuItemCollapseAll_OnClick(object sender, RoutedEventArgs e)
{
// ... truncated for brievety
IEnumerable<CollectionViewGroup> groups = grid.Items.Groups.OfType<CollectionViewGroup>().ToArray();
CollapseGroups(grid, groups);
}
public void CollapseGroups(DataGridControl grid, IEnumerable<CollectionViewGroup> groups)
{
foreach (var @group in groups)
{
grid.CollapseGroup(group);
var subGroups = @group.Items.OfType<CollectionViewGroup>().ToArray();
if (subGroups.Any())
{
CollapseGroups(grid, subGroups);
}
}
}
위처럼 변환하는 나에게 제공하지 않습니다, 완전히 확실하지 않은 것이 가능 여부 바로이 기능 때문입니다.
아이디어가 있으십니까?
경우 (subGroups.Any()) {CollapseGroups (그리드, 하위 그룹)'에 대한 필요 없음을; }'- CollapseGroups를 호출하면됩니다. subGroups 배열이 비어 있으면 메서드가 즉시 종료됩니다. 불필요하게 메소드를 호출하지 않으려 고하는 효율성에 관심이 있다면'Any' 확장 메소드를 사용하는 대신'if (subGroups.Length == 0) '를 사용해야합니다. – phoog
알았어, 고마워! – Aybe