File tree Expand file tree Collapse file tree 1 file changed +26
-5
lines changed
docs/csharp/language-reference/operators/snippets/shared Expand file tree Collapse file tree 1 file changed +26
-5
lines changed Original file line number Diff line number Diff line change 9
9
// <BufferDeclaration>
10
10
public class LineBuffer : IEnumerable < char >
11
11
{
12
- private readonly char [ ] _buffer = new char [ 80 ] ;
12
+ private readonly char [ ] _buffer ;
13
+ private readonly int _count ;
13
14
14
15
public LineBuffer ( ReadOnlySpan < char > buffer )
15
16
{
16
- int number = ( _buffer . Length < buffer . Length ) ? _buffer . Length : buffer . Length ;
17
- for ( int i = 0 ; i < number ; i ++ )
17
+ _buffer = new char [ buffer . Length ] ;
18
+ _count = buffer . Length ;
19
+ for ( int i = 0 ; i < _count ; i ++ )
18
20
{
19
21
_buffer [ i ] = buffer [ i ] ;
20
22
}
21
23
}
22
24
23
- public IEnumerator < char > GetEnumerator ( ) => _buffer . AsEnumerable < char > ( ) . GetEnumerator ( ) ;
24
- IEnumerator IEnumerable . GetEnumerator ( ) => _buffer . GetEnumerator ( ) ;
25
+ public int Count => _count ;
26
+
27
+ public char this [ int index ]
28
+ {
29
+ get
30
+ {
31
+ if ( index >= _count )
32
+ throw new IndexOutOfRangeException ( ) ;
33
+ return _buffer [ index ] ;
34
+ }
35
+ }
36
+
37
+ public IEnumerator < char > GetEnumerator ( )
38
+ {
39
+ for ( int i = 0 ; i < _count ; i ++ )
40
+ {
41
+ yield return _buffer [ i ] ;
42
+ }
43
+ }
44
+
45
+ IEnumerator IEnumerable . GetEnumerator ( ) => GetEnumerator ( ) ;
25
46
26
47
// etc
27
48
}
You can’t perform that action at this time.
0 commit comments