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
- WebPartConnectionCollection.cs
- PenCursorManager.cs
- HttpDictionary.cs
- HttpRawResponse.cs
- RoleGroupCollectionEditor.cs
- TemplateKey.cs
- SqlCharStream.cs
- LoadGrammarCompletedEventArgs.cs
- CssStyleCollection.cs
- XhtmlBasicPanelAdapter.cs
- Opcode.cs
- OleAutBinder.cs
- DataContext.cs
- ListenerHandler.cs
- XamlTreeBuilder.cs
- InvokeAction.cs
- HandlerBase.cs
- UserControlAutomationPeer.cs
- PtsHost.cs
- DBNull.cs
- TemplateField.cs
- TransactedBatchContext.cs
- DBSqlParserColumnCollection.cs
- EventRecordWrittenEventArgs.cs
- LinqToSqlWrapper.cs
- PageContentAsyncResult.cs
- DetailsViewUpdatedEventArgs.cs
- HttpCacheVaryByContentEncodings.cs
- altserialization.cs
- ComplexType.cs
- Parameter.cs
- LOSFormatter.cs
- HuffCodec.cs
- DataComponentMethodGenerator.cs
- PropertyMapper.cs
- NameTable.cs
- MailDefinitionBodyFileNameEditor.cs
- RadioButtonBaseAdapter.cs
- ScriptModule.cs
- OletxEnlistment.cs
- xmlNames.cs
- TextEffectCollection.cs
- CompletedAsyncResult.cs
- FormViewPagerRow.cs
- BitmapEffectCollection.cs
- EncryptedKey.cs
- GridItemProviderWrapper.cs
- TextCollapsingProperties.cs
- XmlUrlResolver.cs
- SourceInterpreter.cs
- InvalidateEvent.cs
- BitmapEffectDrawing.cs
- FontFamilyConverter.cs
- ReachDocumentReferenceSerializer.cs
- GeneralTransform.cs
- TableLayoutSettingsTypeConverter.cs
- DispatcherProcessingDisabled.cs
- XPathQilFactory.cs
- InfocardExtendedInformationCollection.cs
- StyleBamlRecordReader.cs
- relpropertyhelper.cs
- XmlValidatingReaderImpl.cs
- ToolstripProfessionalRenderer.cs
- BuildProvidersCompiler.cs
- ExecutionEngineException.cs
- BitSet.cs
- KeyConverter.cs
- QilLoop.cs
- RangeValidator.cs
- _NegoStream.cs
- SystemIPGlobalProperties.cs
- DataSourceComponent.cs
- Double.cs
- XmlNamespaceMappingCollection.cs
- StateInitializationDesigner.cs
- FormViewUpdatedEventArgs.cs
- ExpressionBuilderCollection.cs
- WebBrowser.cs
- GroupBox.cs
- AudioException.cs
- AutomationPropertyInfo.cs
- EdmScalarPropertyAttribute.cs
- InkCanvasSelection.cs
- DrawingGroup.cs
- MultipartContentParser.cs
- SecurityManager.cs
- StreamGeometry.cs
- SecurityTokenSpecification.cs
- ValueType.cs
- RightsManagementEncryptionTransform.cs
- OutputScopeManager.cs
- ColorInterpolationModeValidation.cs
- MessageQueueTransaction.cs
- ProcessInfo.cs
- AppSettingsExpressionBuilder.cs
- UInt16.cs
- Timeline.cs
- DeflateInput.cs
- ToolTipAutomationPeer.cs
- TableLayoutStyle.cs