.NET Framework Class Library
BinaryReader.PeekChar Method
Returns the next available character and does not advance the byte or character position.
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.Int32The 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 SP1Portable Class Library
Supported in: Portable Class LibraryPlatforms
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.
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.