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
- HttpServerUtilityBase.cs
- ComNativeDescriptor.cs
- PolyBezierSegment.cs
- StringAnimationBase.cs
- ControlAdapter.cs
- TextEndOfLine.cs
- DataMemberListEditor.cs
- BindableAttribute.cs
- CreateRefExpr.cs
- Authorization.cs
- COM2IManagedPerPropertyBrowsingHandler.cs
- ApplicationTrust.cs
- LoginView.cs
- EventLogTraceListener.cs
- FileAuthorizationModule.cs
- TableChangeProcessor.cs
- GeneralTransform2DTo3DTo2D.cs
- InvalidOperationException.cs
- PreviousTrackingServiceAttribute.cs
- DataGridColumnHeaderCollection.cs
- CustomPeerResolverService.cs
- WindowsToolbar.cs
- Model3D.cs
- HopperCache.cs
- CodeMemberEvent.cs
- NGCPageContentSerializerAsync.cs
- ContextConfiguration.cs
- QuadraticBezierSegment.cs
- CurrentChangingEventArgs.cs
- Deserializer.cs
- LocalIdKeyIdentifierClause.cs
- SequentialUshortCollection.cs
- sitestring.cs
- StyleSelector.cs
- FloatSumAggregationOperator.cs
- SharedPerformanceCounter.cs
- XmlIterators.cs
- WindowsFormsSynchronizationContext.cs
- HelpFileFileNameEditor.cs
- KeyConstraint.cs
- RegexMatch.cs
- RewritingProcessor.cs
- Suspend.cs
- mediaeventshelper.cs
- Int64AnimationUsingKeyFrames.cs
- SoapExtensionTypeElement.cs
- UITypeEditor.cs
- RecognizedPhrase.cs
- SHA512.cs
- NoClickablePointException.cs
- ConnectionStringsExpressionBuilder.cs
- XamlTemplateSerializer.cs
- Semaphore.cs
- SecurityException.cs
- TemplateContent.cs
- TablePattern.cs
- AndCondition.cs
- XsltLoader.cs
- SingleConverter.cs
- StrokeCollection2.cs
- NetworkInformationException.cs
- ExpressionNormalizer.cs
- XmlSchemaSimpleContent.cs
- _KerberosClient.cs
- DbMetaDataCollectionNames.cs
- SerializationException.cs
- ImagingCache.cs
- TraceHandlerErrorFormatter.cs
- cookiecollection.cs
- BufferedWebEventProvider.cs
- AuthenticationModuleElement.cs
- RawStylusSystemGestureInputReport.cs
- HtmlInputButton.cs
- SqlBuffer.cs
- Int16Converter.cs
- AttributeUsageAttribute.cs
- EdmFunction.cs
- UriTemplateTable.cs
- ConditionChanges.cs
- CultureInfoConverter.cs
- DynamicResourceExtensionConverter.cs
- LifetimeServices.cs
- BrowserCapabilitiesCompiler.cs
- pingexception.cs
- Misc.cs
- StringUtil.cs
- WebRequestModuleElementCollection.cs
- CodeVariableDeclarationStatement.cs
- WebExceptionStatus.cs
- RegularExpressionValidator.cs
- BooleanFunctions.cs
- IsolatedStorageException.cs
- DataView.cs
- ValidateNames.cs
- UnsafeNativeMethods.cs
- XmlTextReader.cs
- DbConvert.cs
- WindowsStatic.cs
- DeleteMemberBinder.cs
- XmlElementAttribute.cs