Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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.
//
// ==--==
/*============================================================
**
** 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SerializationObjectManager.cs
- WebPartConnectionsEventArgs.cs
- SoapReflectionImporter.cs
- MachineKeyConverter.cs
- DelayedRegex.cs
- LinqExpressionNormalizer.cs
- ArgumentOutOfRangeException.cs
- SoundPlayerAction.cs
- CircleEase.cs
- ClickablePoint.cs
- SiblingIterators.cs
- WorkflowApplicationCompletedException.cs
- OleDbConnection.cs
- XamlTreeBuilder.cs
- ActivityBuilderHelper.cs
- TemplateColumn.cs
- EnlistmentState.cs
- ButtonRenderer.cs
- StringReader.cs
- SafeCancelMibChangeNotify.cs
- SiteMapNodeItem.cs
- TypeResolver.cs
- DictionaryBase.cs
- FixedNode.cs
- ImageInfo.cs
- InputReport.cs
- log.cs
- LinkUtilities.cs
- SqlMethodTransformer.cs
- ETagAttribute.cs
- MsmqIntegrationProcessProtocolHandler.cs
- AutomationTextAttribute.cs
- CatalogZone.cs
- CodeNamespaceCollection.cs
- ImplicitInputBrush.cs
- ISFTagAndGuidCache.cs
- FrameworkElementFactoryMarkupObject.cs
- CommandValueSerializer.cs
- AsyncCompletedEventArgs.cs
- DateTimeOffset.cs
- ButtonField.cs
- CapabilitiesState.cs
- TerminatorSinks.cs
- RootNamespaceAttribute.cs
- DataServiceHostWrapper.cs
- SqlCharStream.cs
- ToolStripScrollButton.cs
- MsmqIntegrationProcessProtocolHandler.cs
- HttpRuntime.cs
- CurrencyWrapper.cs
- ToolTipService.cs
- NamedObject.cs
- ResourceDescriptionAttribute.cs
- MarshalByRefObject.cs
- XmlCharacterData.cs
- ToolStripDesignerUtils.cs
- Ref.cs
- DynamicObject.cs
- ContainerControl.cs
- RelationshipWrapper.cs
- NameObjectCollectionBase.cs
- SapiRecognizer.cs
- OrderPreservingMergeHelper.cs
- Funcletizer.cs
- StatusBar.cs
- MetadataArtifactLoaderComposite.cs
- AnnouncementDispatcherAsyncResult.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- SystemResourceHost.cs
- GrammarBuilderWildcard.cs
- SqlDeflator.cs
- srgsitem.cs
- Thickness.cs
- CodeTypeDeclaration.cs
- CreatingCookieEventArgs.cs
- Ops.cs
- ServiceContractAttribute.cs
- WorkflowDesignerColors.cs
- UnaryNode.cs
- NamespaceInfo.cs
- WebColorConverter.cs
- DataObjectSettingDataEventArgs.cs
- JsonDeserializer.cs
- LexicalChunk.cs
- _SafeNetHandles.cs
- ThreadLocal.cs
- DocumentsTrace.cs
- MethodBody.cs
- SID.cs
- State.cs
- SendSecurityHeaderElement.cs
- UnsafeNetInfoNativeMethods.cs
- URLMembershipCondition.cs
- LambdaCompiler.Address.cs
- XsdBuildProvider.cs
- StrokeCollectionConverter.cs
- TrackingServices.cs
- DataViewSetting.cs
- SemanticBasicElement.cs
- KeyInterop.cs