BinaryReader.PeekChar Method (System.IO)

Switch View :
ScriptFree
.NET Framework Class Library
BinaryReader.PeekChar Method

Returns the next available character and does not advance the byte or character position.

Namespace:  System.IO
Assembly:  mscorlib (in mscorlib.dll)
Syntax

Visual Basic
Public Overridable Function PeekChar As Integer
C#
public virtual int PeekChar()
Visual C++
public:
virtual int PeekChar()
F#
abstract PeekChar : unit -> int 
override PeekChar : unit -> int 

Return Value

Type: System.Int32
The next available character, or -1 if no more characters are available or the stream does not support seeking.
Exceptions

Exception Condition
IOException

An I/O error occurs.

ArgumentException

The current character cannot be decoded into the internal character buffer by using the Encoding selected for the stream.

Remarks

If surrogate characters can be expected in the stream use the ReadChars method, then set the stream back to the original position.

For a list of common I/O tasks, see Common I/O Tasks.

Version Information

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library
Platforms

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
See Also

Reference

Other Resources

Community Content

Triynko
What is the behavior of PeekChar when Surrogate Pairs are encountered?
The documentation seems to be saying you must avoid this method if the stream contains surrogate pairs, suggesting that we use ReadChar and restore the original Position afterwards to simulate a peek instead.
What is returned by PeekChar whena surrogate pair is encountered?  If it return -1, as it would at the end of a stream, then this is not what I'd expect of the method.  I would it expect it to function as described "reads a character without advancing the position".  If there's a surrogate pair, and ReadChar would return a character, then PeekChar should return that same character as well, regardless of whether it's a surrogate pair or not.