Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Validation / ExtensionMethods.cs / 1305376 / ExtensionMethods.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Validation { using System.Collections; using System.Collections.Generic; using System.Text; static class ExtensionMethods { public static bool IsNullOrEmpty(this ICollection c) { return (c == null || c.Count == 0); } public static string AsCommaSeparatedValues(this IEnumerablec) { StringBuilder sb = new StringBuilder(); foreach (string s in c) { if (!string.IsNullOrEmpty(s)) { if (sb.Length == 0) { sb.Append(s); } else { sb.Append(", "); sb.Append(s); } } } return sb.ToString(); } public static int BinarySearch (this IList items, T value, IComparer comparer) { return BinarySearch(items, 0, items.Count, value, comparer); } public static void QuickSort (this IList items, IComparer comparer) { QuickSort(items, 0, items.Count - 1, comparer); } static int BinarySearch (IList items, int startIndex, int length, T value, IComparer comparer) { int start = startIndex; int end = (startIndex + length) - 1; while (start <= end) { int mid = start + ((end - start) >> 1); int result = comparer.Compare(items[mid], value); if (result == 0) { return mid; } if (result < 0) { start = mid + 1; } else { end = mid - 1; } } return ~start; } static void QuickSort (IList items, int startIndex, int endIndex, IComparer comparer) { Stack bounds = new Stack (); do { if (bounds.Count != 0) { endIndex = bounds.Pop(); startIndex = bounds.Pop(); } T pivot = items[startIndex]; int pivotIndex = startIndex; for (int i = startIndex + 1; i <= endIndex; i++) { if (comparer.Compare(pivot, items[i]) > 0) { pivotIndex++; if (pivotIndex != i) { items.Swap(pivotIndex, i); } } } if (startIndex != pivotIndex) { items.Swap(startIndex, pivotIndex); } if (pivotIndex + 1 < endIndex) { bounds.Push(pivotIndex + 1); bounds.Push(endIndex); } if (startIndex < pivotIndex - 1) { bounds.Push(startIndex); bounds.Push(pivotIndex - 1); } } while (bounds.Count != 0); } static void Swap (this IList items, int i, int j) { T temp = items[i]; items[i] = items[j]; items[j] = temp; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProtocolsConfigurationEntry.cs
- DatatypeImplementation.cs
- AdRotator.cs
- AttachedPropertyBrowsableAttribute.cs
- PerspectiveCamera.cs
- NamespaceCollection.cs
- ReliableSessionElement.cs
- CustomAttributeBuilder.cs
- WindowInteropHelper.cs
- parserscommon.cs
- HyperLink.cs
- SHA384Cng.cs
- BamlResourceSerializer.cs
- TypeNameConverter.cs
- ListDataHelper.cs
- IPAddress.cs
- ValidationSummary.cs
- InputScopeAttribute.cs
- SHA1Managed.cs
- HostingEnvironmentWrapper.cs
- AspNetPartialTrustHelpers.cs
- ComplusTypeValidator.cs
- QueryExpr.cs
- HistoryEventArgs.cs
- ControlPropertyNameConverter.cs
- MutexSecurity.cs
- EnumMemberAttribute.cs
- XmlSchemaComplexContent.cs
- ComponentChangedEvent.cs
- XmlAnyAttributeAttribute.cs
- Padding.cs
- SoapEnumAttribute.cs
- MessageRpc.cs
- DataGridGeneralPage.cs
- ResourceContainer.cs
- DocumentEventArgs.cs
- ContainerControlDesigner.cs
- XmlArrayAttribute.cs
- TimelineGroup.cs
- TimeoutException.cs
- CodeMethodInvokeExpression.cs
- HtmlButton.cs
- Tokenizer.cs
- DataGridViewImageColumn.cs
- WebPartConnectionsCancelEventArgs.cs
- XmlUnspecifiedAttribute.cs
- DesignTimeTemplateParser.cs
- PassportAuthenticationModule.cs
- HtmlInputText.cs
- ZipIOLocalFileHeader.cs
- SimpleExpression.cs
- StyleHelper.cs
- ReflectionUtil.cs
- SqlConnectionStringBuilder.cs
- MenuItemBindingCollection.cs
- Separator.cs
- UnsafeNativeMethods.cs
- ProjectionPathBuilder.cs
- ImageListStreamer.cs
- WindowsPen.cs
- ChangeDirector.cs
- WorkflowOperationContext.cs
- ImageListUtils.cs
- SortAction.cs
- RectangleGeometry.cs
- LayeredChannelListener.cs
- InvalidOleVariantTypeException.cs
- CodeEntryPointMethod.cs
- Switch.cs
- SqlDataSource.cs
- XamlReaderHelper.cs
- ApplicationSecurityManager.cs
- Opcode.cs
- BehaviorEditorPart.cs
- GridViewSelectEventArgs.cs
- OleDbSchemaGuid.cs
- TextEditorParagraphs.cs
- CounterSampleCalculator.cs
- TextEndOfLine.cs
- Iis7Helper.cs
- WeakReferenceList.cs
- ColumnWidthChangingEvent.cs
- ProcessModelInfo.cs
- EdmScalarPropertyAttribute.cs
- ProcessStartInfo.cs
- FunctionImportMapping.cs
- ListViewItem.cs
- Decoder.cs
- CryptoApi.cs
- InstanceData.cs
- ScrollBar.cs
- HWStack.cs
- Boolean.cs
- SmtpSection.cs
- MemoryPressure.cs
- SqlCacheDependency.cs
- DiscreteKeyFrames.cs
- FormatterConverter.cs
- TraversalRequest.cs
- CustomErrorCollection.cs