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
- ReaderWriterLock.cs
- SubpageParaClient.cs
- X509Certificate.cs
- BuildManagerHost.cs
- XmlSchemaSequence.cs
- PointAnimationBase.cs
- GuidConverter.cs
- CollectionViewGroupInternal.cs
- TransformerInfoCollection.cs
- ModelChangedEventArgsImpl.cs
- WebPartConnectionsDisconnectVerb.cs
- RadioButtonStandardAdapter.cs
- CollectionConverter.cs
- XmlConverter.cs
- DBConnection.cs
- ZipIOExtraField.cs
- SchemaRegistration.cs
- HttpHandlerActionCollection.cs
- PlainXmlWriter.cs
- LabelAutomationPeer.cs
- SingleObjectCollection.cs
- ComponentDispatcher.cs
- Membership.cs
- ParserOptions.cs
- WindowsBrush.cs
- DataTableReader.cs
- ReliableChannelListener.cs
- XamlClipboardData.cs
- ConfigurationValue.cs
- BasicCellRelation.cs
- IdleTimeoutMonitor.cs
- ValidationPropertyAttribute.cs
- WebPartMenu.cs
- StructuredTypeEmitter.cs
- TypedReference.cs
- LayoutDump.cs
- ContractMapping.cs
- ObjectConverter.cs
- Paragraph.cs
- mactripleDES.cs
- SmiRequestExecutor.cs
- VisualTreeFlattener.cs
- CloudCollection.cs
- Style.cs
- SafeNativeMethodsCLR.cs
- MailWriter.cs
- ParallelQuery.cs
- KeySpline.cs
- ClusterUtils.cs
- EncodingInfo.cs
- GenericTextProperties.cs
- CodeMemberProperty.cs
- __Filters.cs
- FormatException.cs
- Expr.cs
- WmlValidatorAdapter.cs
- unsafeIndexingFilterStream.cs
- PersistenceTypeAttribute.cs
- CodeDelegateCreateExpression.cs
- EventLogger.cs
- XLinq.cs
- EditModeSwitchButton.cs
- EndPoint.cs
- Page.cs
- filewebresponse.cs
- CompatibleComparer.cs
- MessageQueueEnumerator.cs
- HttpProfileGroupBase.cs
- MemberAssignmentAnalysis.cs
- BinaryKeyIdentifierClause.cs
- SecurityKeyUsage.cs
- WebPartDescriptionCollection.cs
- HttpCapabilitiesEvaluator.cs
- RangeValidator.cs
- TimeIntervalCollection.cs
- MachineKeyValidationConverter.cs
- MenuItemBinding.cs
- Calendar.cs
- FrameworkTemplate.cs
- BamlLocalizer.cs
- WebConvert.cs
- DocumentsTrace.cs
- ITreeGenerator.cs
- AtomMaterializerLog.cs
- XmlSerializer.cs
- GridLength.cs
- COM2ICategorizePropertiesHandler.cs
- GraphicsPath.cs
- TransformationRules.cs
- HierarchicalDataBoundControl.cs
- EnvelopedPkcs7.cs
- TransformerTypeCollection.cs
- ChannelManager.cs
- APCustomTypeDescriptor.cs
- CompositeActivityTypeDescriptor.cs
- InkPresenter.cs
- LinearGradientBrush.cs
- EditingCommands.cs
- OdbcPermission.cs
- TagMapCollection.cs