StringReader

StringReader

public class StringReader : TextReader
{
    private String _s;
    private int _pos;
    private int _length;

    public override void Close()
    {
        Dispose(true);
    }

    protected override void Dispose(bool disposing)
    {
        _s = null;
        _pos = 0;
        _length = 0;
        base.Dispose(disposing);
    }


    public override String ReadLine()
    {
        //.....
    }

    public override String ReadToEnd()
    {
        //.....
    }

    #region ASYNC_IO

    public override Task<String> ReadLineAsync()
    {
        return Task.FromResult(ReadLine());
    }

    public override Task<String> ReadToEndAsync()
    {
        return Task.FromResult(ReadToEnd());
    }

    #endregion
}

 

TextReader

public abstract class TextReader : MarshalByRefObject, IDisposable
{
    public virtual void Close()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
    }


    public virtual String ReadToEnd()
    {
        Contract.Ensures(Contract.Result<String>() != null);

        char[] chars = new char[4096];
        int len;
        StringBuilder sb = new StringBuilder(4096);
        while ((len = Read(chars, 0, chars.Length)) != 0)
        {
            sb.Append(chars, 0, len);
        }
        return sb.ToString();
    }


    public override String ReadLine()
    {
        //.....
    }

    public virtual Task<String> ReadLineAsync()
    {
        return Task<String>.Factory.StartNew(_ReadLineDelegate, this, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);
    }

    public async virtual Task<String> ReadToEndAsync()
    {
        char[] chars = new char[4096];
        int len;
        StringBuilder sb = new StringBuilder(4096);
        while ((len = await ReadAsyncInternal(chars, 0, chars.Length).ConfigureAwait(false)) != 0)
        {
            sb.Append(chars, 0, len);
        }
return sb.ToString(); } }

 

posted @ 2016-11-23 14:04  茗::流  阅读(420)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。