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
- BitmapEffectCollection.cs
- FormatStringEditor.cs
- BitmapScalingModeValidation.cs
- WrapPanel.cs
- EventEntry.cs
- ServiceHttpHandlerFactory.cs
- CssStyleCollection.cs
- ObjectComplexPropertyMapping.cs
- TabletDeviceInfo.cs
- TemplateControlBuildProvider.cs
- DataGridViewCellCollection.cs
- COM2ExtendedBrowsingHandler.cs
- UseManagedPresentationBindingElementImporter.cs
- XmlSchemaSimpleContentRestriction.cs
- WhitespaceSignificantCollectionAttribute.cs
- Cursor.cs
- Script.cs
- ViewGenResults.cs
- LinkArea.cs
- ExclusiveHandleList.cs
- ZeroOpNode.cs
- RadioButtonFlatAdapter.cs
- StorageScalarPropertyMapping.cs
- HttpListenerPrefixCollection.cs
- TreeSet.cs
- EntityContainerRelationshipSet.cs
- FontDifferentiator.cs
- MemberInitExpression.cs
- Set.cs
- WebPartUtil.cs
- DataPagerField.cs
- PixelFormat.cs
- PolicyImporterElement.cs
- BaseValidator.cs
- CodeExpressionRuleDeclaration.cs
- XmlNavigatorFilter.cs
- FixedPosition.cs
- RSACryptoServiceProvider.cs
- backend.cs
- XmlAttributeCollection.cs
- TextRange.cs
- CodeAttributeArgument.cs
- RowParagraph.cs
- ImageAutomationPeer.cs
- X509Chain.cs
- ValueQuery.cs
- LoadItemsEventArgs.cs
- FontUnit.cs
- xmlformatgeneratorstatics.cs
- PasswordPropertyTextAttribute.cs
- WpfXamlMember.cs
- ListViewGroupConverter.cs
- ConstructorNeedsTagAttribute.cs
- TrackingMemoryStreamFactory.cs
- XmlBinaryReader.cs
- DelegatingConfigHost.cs
- DataServiceQueryOfT.cs
- OdbcStatementHandle.cs
- DataBinding.cs
- Color.cs
- SerializationFieldInfo.cs
- Geometry.cs
- StrongNamePublicKeyBlob.cs
- ISAPIWorkerRequest.cs
- CollectionViewGroupInternal.cs
- InvalidComObjectException.cs
- DesignerVerb.cs
- TypeValidationEventArgs.cs
- SerializationEventsCache.cs
- XmlAttribute.cs
- TargetPerspective.cs
- SqlInfoMessageEvent.cs
- Style.cs
- GeneralTransform.cs
- ReadWriteSpinLock.cs
- AsymmetricAlgorithm.cs
- CompositeActivityTypeDescriptor.cs
- XmlSchemaSubstitutionGroup.cs
- Panel.cs
- LayoutTable.cs
- PrintingPermission.cs
- WebControlsSection.cs
- RegionData.cs
- CfgParser.cs
- HeaderUtility.cs
- ResourceDescriptionAttribute.cs
- UpdatePanel.cs
- AnchoredBlock.cs
- AttributeUsageAttribute.cs
- StrokeRenderer.cs
- CardSpaceException.cs
- PanelDesigner.cs
- ToolStripDesignerUtils.cs
- TreeChangeInfo.cs
- CodeCommentStatementCollection.cs
- MessageParameterAttribute.cs
- HttpApplication.cs
- FindCriteriaCD1.cs
- ToggleButton.cs
- GregorianCalendar.cs