Code:
/ DotNET / DotNET / 8.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
- Monitor.cs
- EnumCodeDomSerializer.cs
- TabControlAutomationPeer.cs
- Graph.cs
- ComplexTypeEmitter.cs
- ITextView.cs
- LinearKeyFrames.cs
- Trace.cs
- AlternateView.cs
- Font.cs
- WebBrowserUriTypeConverter.cs
- Message.cs
- XmlSchemaSequence.cs
- CommandEventArgs.cs
- ListParagraph.cs
- WebConfigurationFileMap.cs
- DetailsViewPageEventArgs.cs
- UInt64.cs
- X509CertificateChain.cs
- StorageInfo.cs
- FieldBuilder.cs
- MemberPath.cs
- SystemSounds.cs
- XmlAttributes.cs
- WebBrowserBase.cs
- DrawingGroupDrawingContext.cs
- NullableDoubleMinMaxAggregationOperator.cs
- DateTimeParse.cs
- XmlName.cs
- PlainXmlSerializer.cs
- DecoderNLS.cs
- ObjectQuery.cs
- AttachedAnnotationChangedEventArgs.cs
- PathSegmentCollection.cs
- IntSecurity.cs
- Point3DKeyFrameCollection.cs
- ExpressionVisitor.cs
- TextRangeBase.cs
- HttpResponseBase.cs
- HttpAsyncResult.cs
- BypassElement.cs
- SimpleLine.cs
- LightweightEntityWrapper.cs
- DefaultAssemblyResolver.cs
- BitmapEffectInputData.cs
- RealProxy.cs
- SignedXml.cs
- OdbcTransaction.cs
- RepeaterCommandEventArgs.cs
- GcHandle.cs
- CharAnimationUsingKeyFrames.cs
- DataBinder.cs
- DataGridViewImageCell.cs
- filewebresponse.cs
- embossbitmapeffect.cs
- XmlSchemaSimpleTypeList.cs
- ChannelServices.cs
- URLAttribute.cs
- ProcessThreadCollection.cs
- FilteredXmlReader.cs
- SevenBitStream.cs
- AccessibleObject.cs
- StringConverter.cs
- InstallerTypeAttribute.cs
- Activator.cs
- StorageFunctionMapping.cs
- JsonQueryStringConverter.cs
- PersonalizablePropertyEntry.cs
- EmptyEnumerable.cs
- SelectedCellsCollection.cs
- InvalidCommandTreeException.cs
- InputMethod.cs
- CheckoutException.cs
- XsdDataContractImporter.cs
- EnumValAlphaComparer.cs
- TypeListConverter.cs
- QuinticEase.cs
- UdpRetransmissionSettings.cs
- ReadContentAsBinaryHelper.cs
- RoutingService.cs
- StateItem.cs
- BitmapEncoder.cs
- DataGridTableStyleMappingNameEditor.cs
- MiniMapControl.xaml.cs
- ExceptionHandlers.cs
- ForceCopyBuildProvider.cs
- AccessDataSourceView.cs
- CodePropertyReferenceExpression.cs
- EmptyQuery.cs
- RSAPKCS1SignatureDeformatter.cs
- mediaeventshelper.cs
- BindingValueChangedEventArgs.cs
- SelectionRange.cs
- TreeViewEvent.cs
- LicFileLicenseProvider.cs
- HttpVersion.cs
- DictionaryBase.cs
- DebugView.cs
- SapiInterop.cs
- PipeStream.cs