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
- OptionalMessageQuery.cs
- TextPenaltyModule.cs
- Slider.cs
- WsrmFault.cs
- WorkflowRuntimeServiceElement.cs
- SchemaNames.cs
- Pointer.cs
- DesignColumn.cs
- LogicalTreeHelper.cs
- PublishLicense.cs
- DefaultAsyncDataDispatcher.cs
- SiteMapSection.cs
- AnnouncementEndpoint.cs
- DataGridViewColumnHeaderCell.cs
- ComEventsSink.cs
- SqlRewriteScalarSubqueries.cs
- GAC.cs
- Image.cs
- Relationship.cs
- ColumnCollection.cs
- SqlTriggerAttribute.cs
- TypeValidationEventArgs.cs
- GeneralTransformGroup.cs
- HtmlLabelAdapter.cs
- ExportOptions.cs
- SchemaConstraints.cs
- TransactionBehavior.cs
- DbSetClause.cs
- ReferenceService.cs
- MethodBody.cs
- BmpBitmapEncoder.cs
- AssemblyBuilder.cs
- TableItemStyle.cs
- SmtpMail.cs
- RoutedEventArgs.cs
- ValidatorAttribute.cs
- CachedRequestParams.cs
- UIntPtr.cs
- UnknownWrapper.cs
- TextFormatterHost.cs
- DefaultParameterValueAttribute.cs
- DataGridColumnHeaderCollection.cs
- IntranetCredentialPolicy.cs
- UserNameSecurityTokenProvider.cs
- IntegerValidatorAttribute.cs
- CharacterBufferReference.cs
- Light.cs
- WhitespaceReader.cs
- TextEditorTyping.cs
- WrappedIUnknown.cs
- LicFileLicenseProvider.cs
- AppearanceEditorPart.cs
- DefaultBinder.cs
- TreeNodeStyleCollection.cs
- StylusTip.cs
- ConstraintEnumerator.cs
- IndentedWriter.cs
- RIPEMD160.cs
- QueryContinueDragEvent.cs
- Vector3DAnimationBase.cs
- ProviderException.cs
- TextOnlyOutput.cs
- FixedSOMLineRanges.cs
- ChangeNode.cs
- pingexception.cs
- HtmlElement.cs
- OleAutBinder.cs
- ProfileEventArgs.cs
- EncoderReplacementFallback.cs
- PriorityBinding.cs
- CodeStatementCollection.cs
- ToolBarTray.cs
- StylusPlugin.cs
- LocationInfo.cs
- AliasedSlot.cs
- LinkedResourceCollection.cs
- RSAPKCS1SignatureFormatter.cs
- ChameleonKey.cs
- Bidi.cs
- StretchValidation.cs
- DynamicValidatorEventArgs.cs
- XmlSchemaSet.cs
- TableLayoutRowStyleCollection.cs
- SystemUnicastIPAddressInformation.cs
- ScrollBarRenderer.cs
- UInt16.cs
- HandlerFactoryCache.cs
- XDRSchema.cs
- CaseStatement.cs
- Int32Storage.cs
- CrossAppDomainChannel.cs
- QilUnary.cs
- FileDialog_Vista_Interop.cs
- Authorization.cs
- LingerOption.cs
- Axis.cs
- Emitter.cs
- MeshGeometry3D.cs
- ListDataBindEventArgs.cs
- XPathNodePointer.cs