Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExpressionPrinter.cs
- HuffmanTree.cs
- DataDocumentXPathNavigator.cs
- PermissionToken.cs
- SyntaxCheck.cs
- ToolStripArrowRenderEventArgs.cs
- WeakHashtable.cs
- BinaryHeap.cs
- DiffuseMaterial.cs
- DrawingContextDrawingContextWalker.cs
- CompModSwitches.cs
- SqlCacheDependency.cs
- ProjectionPruner.cs
- ArrayEditor.cs
- Part.cs
- SqlReferenceCollection.cs
- ListControl.cs
- VariableReference.cs
- XmlDomTextWriter.cs
- RegexCharClass.cs
- WsdlWriter.cs
- TabControlEvent.cs
- DocumentReference.cs
- RootAction.cs
- Viewport3DAutomationPeer.cs
- HighContrastHelper.cs
- SqlNotificationEventArgs.cs
- XmlBufferReader.cs
- Expression.cs
- CommandConverter.cs
- TextRangeEditTables.cs
- ScriptBehaviorDescriptor.cs
- UserPersonalizationStateInfo.cs
- CompiledRegexRunnerFactory.cs
- WebPartTransformerAttribute.cs
- ToolStripArrowRenderEventArgs.cs
- IDispatchConstantAttribute.cs
- XmlWrappingReader.cs
- Rotation3D.cs
- StringResourceManager.cs
- DynamicQueryableWrapper.cs
- sqlpipe.cs
- LocatorGroup.cs
- IItemContainerGenerator.cs
- XmlSortKeyAccumulator.cs
- StyleXamlTreeBuilder.cs
- DocobjHost.cs
- PenThreadPool.cs
- ToolStripItemCollection.cs
- PolygonHotSpot.cs
- GestureRecognitionResult.cs
- ConfigXmlSignificantWhitespace.cs
- TraceLog.cs
- ObjectListCommandsPage.cs
- HtmlToClrEventProxy.cs
- CompilerParameters.cs
- Pool.cs
- SqlFlattener.cs
- EntitySqlException.cs
- CustomErrorsSectionWrapper.cs
- InertiaTranslationBehavior.cs
- WarningException.cs
- XmlIncludeAttribute.cs
- TypefaceMetricsCache.cs
- DataGridViewCellStateChangedEventArgs.cs
- CollectionExtensions.cs
- coordinatorfactory.cs
- WebPartMenuStyle.cs
- CodeAssignStatement.cs
- ComplexPropertyEntry.cs
- WhitespaceSignificantCollectionAttribute.cs
- ObjectHandle.cs
- StrokeCollectionDefaultValueFactory.cs
- OperandQuery.cs
- FileRecordSequenceHelper.cs
- TeredoHelper.cs
- XmlSchemaImport.cs
- UriTemplateQueryValue.cs
- SourceChangedEventArgs.cs
- Column.cs
- XmlSchemaObjectCollection.cs
- TreeIterators.cs
- DataServiceProcessingPipeline.cs
- OleAutBinder.cs
- _AutoWebProxyScriptHelper.cs
- ListenerElementsCollection.cs
- Help.cs
- ZeroOpNode.cs
- ClientSettingsSection.cs
- SqlException.cs
- SSmlParser.cs
- OptimisticConcurrencyException.cs
- CTreeGenerator.cs
- DependencyPropertyKey.cs
- QilLoop.cs
- BorderGapMaskConverter.cs
- PropertyEmitter.cs
- EntityContainer.cs
- SizeF.cs
- Module.cs