Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- FlowLayoutPanel.cs
- DataGridViewAddColumnDialog.cs
- BoundField.cs
- Point3DCollection.cs
- ResourceWriter.cs
- WindowsRebar.cs
- Missing.cs
- XamlStackWriter.cs
- RuntimeConfig.cs
- LoginCancelEventArgs.cs
- FormView.cs
- DataSourceCacheDurationConverter.cs
- ItemsControlAutomationPeer.cs
- DataTableNewRowEvent.cs
- HandoffBehavior.cs
- EdmItemError.cs
- ScriptModule.cs
- MenuItem.cs
- ConfigPathUtility.cs
- NCryptNative.cs
- GridItemPatternIdentifiers.cs
- OleServicesContext.cs
- EventLogTraceListener.cs
- MediaPlayerState.cs
- CodeTypeDelegate.cs
- XmlSchemaComplexContent.cs
- ImageDesigner.cs
- mediaclock.cs
- Cursor.cs
- UpdateRecord.cs
- XmlNamespaceDeclarationsAttribute.cs
- LifetimeServices.cs
- RequestStatusBarUpdateEventArgs.cs
- CardSpacePolicyElement.cs
- X509CertificateStore.cs
- AudioFormatConverter.cs
- PingReply.cs
- EmptyQuery.cs
- MenuCommands.cs
- XmlAnyAttributeAttribute.cs
- StructuralType.cs
- XmlTextEncoder.cs
- ComboBox.cs
- ConnectionPoolManager.cs
- WmfPlaceableFileHeader.cs
- TableLayoutSettings.cs
- DataSet.cs
- ProcessThreadDesigner.cs
- CompositeTypefaceMetrics.cs
- GeometryCombineModeValidation.cs
- TiffBitmapDecoder.cs
- ListenerElementsCollection.cs
- FunctionQuery.cs
- ToolStripPanelRenderEventArgs.cs
- RunClient.cs
- MemberInfoSerializationHolder.cs
- QuaternionValueSerializer.cs
- UriScheme.cs
- Span.cs
- OleDbEnumerator.cs
- AnimationClock.cs
- HashAlgorithm.cs
- JapaneseLunisolarCalendar.cs
- PrintControllerWithStatusDialog.cs
- AvtEvent.cs
- SourceFileBuildProvider.cs
- SessionStateUtil.cs
- DataBindEngine.cs
- NavigationFailedEventArgs.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- DateTimeOffset.cs
- TreeNodeBindingDepthConverter.cs
- InternalConfigHost.cs
- HttpModule.cs
- StringResourceManager.cs
- DateTimeOffsetStorage.cs
- FigureParagraph.cs
- WindowProviderWrapper.cs
- SocketPermission.cs
- InputLangChangeEvent.cs
- SiteMapNodeItem.cs
- DBCSCodePageEncoding.cs
- assertwrapper.cs
- Tokenizer.cs
- DataRelationCollection.cs
- ItemMap.cs
- ObjectViewListener.cs
- LinearKeyFrames.cs
- FilterQueryOptionExpression.cs
- SizeValueSerializer.cs
- EntityTemplateUserControl.cs
- PropertyMetadata.cs
- VisualTreeUtils.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- WebPartChrome.cs
- ConnectionPoint.cs
- DataMemberConverter.cs
- WithParamAction.cs
- HostedTransportConfigurationManager.cs
- GroupBoxRenderer.cs