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
- TemplateInstanceAttribute.cs
- SettingsProviderCollection.cs
- ApplicationInfo.cs
- SqlClientWrapperSmiStreamChars.cs
- FlowDocumentPage.cs
- RtType.cs
- ThreadAttributes.cs
- TypeResolvingOptionsAttribute.cs
- NavigationWindowAutomationPeer.cs
- XamlTemplateSerializer.cs
- TraceInternal.cs
- XmlnsDictionary.cs
- DefinitionProperties.cs
- ReliableDuplexSessionChannel.cs
- ExternalFile.cs
- TransactionInformation.cs
- Int64Converter.cs
- PathFigureCollectionValueSerializer.cs
- PeerNameRecord.cs
- cookiecollection.cs
- TextTreeDeleteContentUndoUnit.cs
- reliableinputsessionchannel.cs
- ToolStripGripRenderEventArgs.cs
- XmlMembersMapping.cs
- PersonalizationStateInfo.cs
- DocumentViewerBase.cs
- WindowsRichEditRange.cs
- QueryReaderSettings.cs
- PackWebRequestFactory.cs
- CommandBindingCollection.cs
- XmlSiteMapProvider.cs
- DoubleCollection.cs
- RepeatInfo.cs
- FillBehavior.cs
- SchemaImporterExtension.cs
- GifBitmapEncoder.cs
- RecognizeCompletedEventArgs.cs
- WebRequestModulesSection.cs
- DelayDesigner.cs
- RuntimeHelpers.cs
- ProcessInfo.cs
- ConditionalAttribute.cs
- Msmq4PoisonHandler.cs
- MemoryMappedViewStream.cs
- Point4DConverter.cs
- _RegBlobWebProxyDataBuilder.cs
- DeflateStream.cs
- ItemCheckEvent.cs
- ControlBindingsConverter.cs
- XmlSchemaException.cs
- SecurityContextSecurityToken.cs
- SchemaEntity.cs
- FileDataSourceCache.cs
- MessageEventSubscriptionService.cs
- TdsParserSessionPool.cs
- ToolStripStatusLabel.cs
- PerspectiveCamera.cs
- DataGridColumnsPage.cs
- OracleDataAdapter.cs
- TagPrefixInfo.cs
- XmlArrayAttribute.cs
- NCryptSafeHandles.cs
- XmlQueryOutput.cs
- BasicHttpSecurityElement.cs
- XamlWriter.cs
- ValidationErrorCollection.cs
- SspiHelper.cs
- login.cs
- ModelUtilities.cs
- XmlSchemaGroup.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- KeyValuePairs.cs
- RichTextBoxConstants.cs
- AffineTransform3D.cs
- Directory.cs
- SqlGenericUtil.cs
- FeedUtils.cs
- BevelBitmapEffect.cs
- FormView.cs
- LicenseManager.cs
- SchemaMapping.cs
- Int32RectConverter.cs
- DecimalKeyFrameCollection.cs
- XmlWriterDelegator.cs
- FactoryGenerator.cs
- MessageTraceRecord.cs
- CodeTypeReferenceCollection.cs
- Panel.cs
- Signature.cs
- EllipseGeometry.cs
- SettingsPropertyCollection.cs
- RepeaterItem.cs
- TextSyndicationContentKindHelper.cs
- SynchronizationHandlesCodeDomSerializer.cs
- Int32Animation.cs
- RootBrowserWindowAutomationPeer.cs
- HwndHostAutomationPeer.cs
- RadioButtonList.cs
- sqlmetadatafactory.cs
- GridViewColumn.cs