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
- SharedUtils.cs
- TraceSource.cs
- DataGridLinkButton.cs
- WebContext.cs
- OleDbReferenceCollection.cs
- StyleSelector.cs
- BitmapVisualManager.cs
- CompositeActivityTypeDescriptorProvider.cs
- RootProfilePropertySettingsCollection.cs
- ToolStripContentPanel.cs
- WpfPayload.cs
- Convert.cs
- SafeNativeMethods.cs
- ReferenceAssemblyAttribute.cs
- SiteIdentityPermission.cs
- EnumerableRowCollectionExtensions.cs
- ListenerElementsCollection.cs
- WebPartMovingEventArgs.cs
- UiaCoreTypesApi.cs
- ListItemCollection.cs
- LightweightCodeGenerator.cs
- TableLayoutStyle.cs
- RtType.cs
- WindowsProgressbar.cs
- CapabilitiesUse.cs
- OracleCommandBuilder.cs
- BookmarkResumptionRecord.cs
- TraceSection.cs
- StateDesignerConnector.cs
- EntityContainer.cs
- EventToken.cs
- TraceHandlerErrorFormatter.cs
- QueryContext.cs
- ZipIOExtraFieldElement.cs
- SHA384.cs
- ZipIOLocalFileBlock.cs
- NameValueSectionHandler.cs
- ColorAnimationBase.cs
- Regex.cs
- IisTraceWebEventProvider.cs
- StatusBarItem.cs
- Journaling.cs
- AutoGeneratedField.cs
- SerializableAttribute.cs
- RuntimeConfig.cs
- SafeThreadHandle.cs
- _BasicClient.cs
- TableLayoutSettings.cs
- TextServicesCompartmentEventSink.cs
- UniqueEventHelper.cs
- IncrementalCompileAnalyzer.cs
- StructuredCompositeActivityDesigner.cs
- DependencyObject.cs
- UpdateCompiler.cs
- QueryableFilterUserControl.cs
- ProcessProtocolHandler.cs
- NestPullup.cs
- coordinatorfactory.cs
- WindowsClaimSet.cs
- TextBox.cs
- XPathException.cs
- EpmCustomContentDeSerializer.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- PointCollection.cs
- WorkflowDesignerColors.cs
- ObjectIDGenerator.cs
- ErrorHandler.cs
- MissingMethodException.cs
- XamlClipboardData.cs
- WorkflowDurableInstance.cs
- ColumnWidthChangedEvent.cs
- WorkflowRuntimeServiceElement.cs
- InvokeWebServiceDesigner.cs
- PassportPrincipal.cs
- SortedDictionary.cs
- CryptoApi.cs
- ToolStripDropTargetManager.cs
- AttributeAction.cs
- AssemblySettingAttributes.cs
- BoundField.cs
- ItemsPresenter.cs
- GreenMethods.cs
- VectorAnimationUsingKeyFrames.cs
- CompilationRelaxations.cs
- KerberosRequestorSecurityToken.cs
- PropertyEmitterBase.cs
- externdll.cs
- StructuredTypeEmitter.cs
- MessageHeaderInfoTraceRecord.cs
- ContextInformation.cs
- StaticDataManager.cs
- TextAdaptor.cs
- InputProcessorProfiles.cs
- RangeContentEnumerator.cs
- PageThemeParser.cs
- PersistenceTypeAttribute.cs
- MediaTimeline.cs
- validationstate.cs
- RuntimeArgument.cs
- URLString.cs