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
- XsltContext.cs
- RestClientProxyHandler.cs
- MaskDescriptor.cs
- ServiceBusyException.cs
- COM2Properties.cs
- SiteMapNodeItem.cs
- ProcessManager.cs
- Symbol.cs
- DoubleCollectionValueSerializer.cs
- TemporaryBitmapFile.cs
- SoapIncludeAttribute.cs
- UInt32.cs
- SignedInfo.cs
- TimeSpan.cs
- DesignerProperties.cs
- _UncName.cs
- XPathDocumentBuilder.cs
- ProviderConnectionPoint.cs
- HashMembershipCondition.cs
- _NativeSSPI.cs
- InkPresenterAutomationPeer.cs
- ClientViaElement.cs
- ApplyTemplatesAction.cs
- VectorAnimationUsingKeyFrames.cs
- InsufficientMemoryException.cs
- XPathNavigatorReader.cs
- JavaScriptSerializer.cs
- EventBuilder.cs
- XmlSchemaAppInfo.cs
- ContractNamespaceAttribute.cs
- PackageRelationshipSelector.cs
- SequenceDesigner.cs
- TranslateTransform.cs
- QilInvokeLateBound.cs
- GroupBox.cs
- PersonalizationProvider.cs
- SmiEventSink.cs
- FormParameter.cs
- x509store.cs
- CompiledIdentityConstraint.cs
- SqlMetaData.cs
- TableItemPattern.cs
- ResourceCategoryAttribute.cs
- FunctionImportMapping.cs
- SwitchExpression.cs
- XsltCompileContext.cs
- ArcSegment.cs
- SqlProvider.cs
- NotifyIcon.cs
- Form.cs
- DelegateBodyWriter.cs
- ServiceNameElement.cs
- WebPartUtil.cs
- LineVisual.cs
- ReadOnlyCollectionBuilder.cs
- SocketException.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- StreamHelper.cs
- IconConverter.cs
- Decoder.cs
- BaseProcessor.cs
- DefaultPropertyAttribute.cs
- ConnectionStringSettings.cs
- SiteOfOriginContainer.cs
- sitestring.cs
- XmlByteStreamReader.cs
- CorrelationService.cs
- Debugger.cs
- FeatureSupport.cs
- ConversionValidationRule.cs
- SqlConnectionStringBuilder.cs
- NamespaceMapping.cs
- DBCommandBuilder.cs
- PathTooLongException.cs
- ExpiredSecurityTokenException.cs
- TagMapInfo.cs
- ItemMap.cs
- QueryConverter.cs
- ComplexType.cs
- sortedlist.cs
- XamlReaderHelper.cs
- CodeTypeParameter.cs
- SelectionPattern.cs
- BufferedGraphicsManager.cs
- TransformConverter.cs
- WorkerRequest.cs
- ImageFormat.cs
- DiscreteKeyFrames.cs
- PlatformNotSupportedException.cs
- TypeValidationEventArgs.cs
- NegotiateStream.cs
- DbConvert.cs
- SID.cs
- InputBinding.cs
- ComponentResourceManager.cs
- CopyNamespacesAction.cs
- RootBrowserWindowProxy.cs
- SizeAnimation.cs
- FileChangesMonitor.cs
- HtmlTable.cs