Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / IO / StringWriter.cs / 1 / StringWriter.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: StringWriter ** ** Purpose: For writing text to a string ** ** ===========================================================*/ using System; using System.Text; using System.Globalization; namespace System.IO { // This class implements a text writer that writes to a string buffer and allows // the resulting sequence of characters to be presented as a string. // [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public class StringWriter : TextWriter { private static UnicodeEncoding m_encoding=null; private StringBuilder _sb; private bool _isOpen; // Constructs a new StringWriter. A new StringBuilder is automatically // created and associated with the new StringWriter. public StringWriter() : this(new StringBuilder(), CultureInfo.CurrentCulture) { } public StringWriter(IFormatProvider formatProvider) : this(new StringBuilder(), formatProvider) { } // Constructs a new StringWriter that writes to the given StringBuilder. // public StringWriter(StringBuilder sb) : this(sb, CultureInfo.CurrentCulture) { } public StringWriter(StringBuilder sb, IFormatProvider formatProvider) : base(formatProvider) { if (sb==null) throw new ArgumentNullException("sb", Environment.GetResourceString("ArgumentNull_Buffer")); _sb = sb; _isOpen = true; } public override void Close() { Dispose(true); } protected override void Dispose(bool disposing) { // Do not destroy _sb, so that we can extract this after we are // done writing (similar to MemoryStream's GetBuffer & ToArray methods) _isOpen = false; base.Dispose(disposing); } public override Encoding Encoding { get { if (m_encoding==null) { m_encoding = new UnicodeEncoding(false, false); } return m_encoding; } } // Returns the underlying StringBuilder. This is either the StringBuilder // that was passed to the constructor, or the StringBuilder that was // automatically created. // public virtual StringBuilder GetStringBuilder() { return _sb; } // Writes a character to the underlying string buffer. // public override void Write(char value) { if (!_isOpen) __Error.WriterClosed(); _sb.Append(value); } // Writes a range of a character array to the underlying string buffer. // This method will write count characters of data into this // StringWriter from the buffer character array starting at position // index. // public override void Write(char[] buffer, int index, int count) { if (!_isOpen) __Error.WriterClosed(); if (buffer==null) throw new ArgumentNullException("buffer", Environment.GetResourceString("ArgumentNull_Buffer")); if (index < 0) throw new ArgumentOutOfRangeException("index", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); if (count < 0) throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); if (buffer.Length - index < count) throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen")); _sb.Append(buffer, index, count); } // Writes a string to the underlying string buffer. If the given string is // null, nothing is written. // public override void Write(String value) { if (!_isOpen) __Error.WriterClosed(); if (value != null) _sb.Append(value); } // Returns a string containing the characters written to this TextWriter // so far. // public override String ToString() { return _sb.ToString(); } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AdornerHitTestResult.cs
- TextTreeUndoUnit.cs
- ReferenceTypeElement.cs
- TreeNodeStyleCollection.cs
- SamlSecurityToken.cs
- TypeNameConverter.cs
- XamlRtfConverter.cs
- OrthographicCamera.cs
- PointConverter.cs
- XmlILConstructAnalyzer.cs
- SocketPermission.cs
- EventDrivenDesigner.cs
- RequestResizeEvent.cs
- DataServiceRequest.cs
- Wrapper.cs
- PathFigure.cs
- SplitterCancelEvent.cs
- MimeBasePart.cs
- ToolStripMenuItemDesigner.cs
- Int16Animation.cs
- SessionSwitchEventArgs.cs
- SpeakCompletedEventArgs.cs
- ExpandSegmentCollection.cs
- GeneralTransform3DTo2D.cs
- ConvertersCollection.cs
- ErrorFormatterPage.cs
- TextShapeableCharacters.cs
- StrokeCollection.cs
- DesignerLoader.cs
- XmlReflectionMember.cs
- SolidColorBrush.cs
- InvalidFilterCriteriaException.cs
- XmlSchemaComplexContentExtension.cs
- _StreamFramer.cs
- FilterException.cs
- ActivityCodeDomReferenceService.cs
- HMACSHA384.cs
- AdornedElementPlaceholder.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- BlurEffect.cs
- PerformanceCounters.cs
- SplashScreenNativeMethods.cs
- BitmapEffectState.cs
- FontCollection.cs
- ColumnBinding.cs
- PostBackOptions.cs
- BidOverLoads.cs
- DataObjectPastingEventArgs.cs
- ResXResourceWriter.cs
- WindowManager.cs
- SpotLight.cs
- DataGridToolTip.cs
- Baml6Assembly.cs
- IPipelineRuntime.cs
- UncommonField.cs
- PersistenceTypeAttribute.cs
- TraceSection.cs
- BeginStoryboard.cs
- List.cs
- _DynamicWinsockMethods.cs
- XmlArrayAttribute.cs
- PathFigureCollectionConverter.cs
- ActivityCodeGenerator.cs
- dbdatarecord.cs
- ColorContext.cs
- Contracts.cs
- PrintDialogDesigner.cs
- OrthographicCamera.cs
- BuildResult.cs
- TcpWorkerProcess.cs
- DataGridViewImageColumn.cs
- mactripleDES.cs
- nulltextnavigator.cs
- ArrayElementGridEntry.cs
- PreApplicationStartMethodAttribute.cs
- TableLayoutRowStyleCollection.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- SiteMapSection.cs
- DataColumnMappingCollection.cs
- ResourceIDHelper.cs
- TreeNodeBinding.cs
- ReadWriteSpinLock.cs
- DbModificationClause.cs
- RegexGroupCollection.cs
- ProofTokenCryptoHandle.cs
- PresentationSource.cs
- ISAPIApplicationHost.cs
- BitmapEffectGeneralTransform.cs
- BaseTemplateParser.cs
- TreeNodeStyleCollection.cs
- ExceptionRoutedEventArgs.cs
- Rethrow.cs
- ToolStripDropDown.cs
- RenderData.cs
- RowToParametersTransformer.cs
- BinaryMessageFormatter.cs
- _ConnectionGroup.cs
- PixelFormats.cs
- ComboBox.cs
- ButtonPopupAdapter.cs