public static void UnitTest_LongRefTest() { long stackof = 4200000000L; long stackl = 24; var heapLong = new LongHolder(); ILRuntimeTest.TestFramework.ClassInheritanceTest.TestLongRef(ref stackof); //无论代码是否binding,输出TestLongRef:-94967296 ILRuntimeTest.TestFramework.ClassInheritanceTest.TestLongRef(ref stackl); //无论代码是否binding,输出TestLongRef:24 ILRuntimeTest.TestFramework.ClassInheritanceTest.TestLongRef(ref heapLong.lv); //若代码binding,输出TestLongRef:4(或者其他莫名的值),否则输出TestLongRef:0,换成ref int也一样,class对象的话没测试过。 }
public void SelectEntities() { if (SearchCriteria != null) { try { long brandId = SelectedItem?.Id ?? -1L; Entities.Clear(); LongHolder position = new LongHolder { Value = 0 }; List <BrandItem> loadedEntities = GetItems().Select(x => new BrandItem(x) { Position = position.Value++ }).ToList(); if (SearchCriteria != null) { loadedEntities.ForEach( x => x.Selected = SearchCriteria.SelectedBrandItems.Any(s => s.Id == x.Id && s.Selected)); SearchCriteria.BrandItems = loadedEntities; SearchCriteria.SelectedBrandItems.Clear(); Entities.Where(x => x.Selected).ToList().ForEach(x => SearchCriteria.SelectedBrandItems.Add(x)); } BrandItem brandItem = loadedEntities.FirstOrDefault(x => x != null && x.Id == brandId) ?? Entities.FirstOrDefault(); Application.Current.Dispatcher.Invoke( () => { Entities.AddRange(loadedEntities); OnPropertyChanged(nameof(Entities)); SelectedItem = brandItem; SearchCriteria.BrandComplited(); }); } catch (Exception e) { ; //throw; } } }
private List <CatalogItem> GetItems(int startRow, int maxRows) { if (oldMaximumRows != MaximumRows || SearchCriteria.IsModified || SearchCriteria.EnabledAdvancedSearch) { cacheCatalogItems.Clear(); oldMaximumRows = MaximumRows; } List <CatalogItem> items; if (!cacheCatalogItems.TryGetValue(startRow, out items)) { LongHolder position = new LongHolder { Value = startRow }; List <CatalogItemEntity> entityItems = GetItems() .OrderBy(x => x.Name) .Skip(startRow) .Take(maxRows) .ToList(); items = entityItems .Select(x => new CatalogItem(x, DataService, ImageService) { Position = ++position.Value }) .ToList(); if (cacheCatalogItems.Count > 50) { var firstItems = cacheCatalogItems.FirstOrDefault(); cacheCatalogItems.Remove(firstItems.Key); } cacheCatalogItems.Add(startRow, items); } return(items); }