You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: standard/classes.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -336,7 +336,7 @@ It is not possible to derive from a sealed class.
336
336
337
337
A *class_base* specificationmayincludealistofinterfacetypes, inwhichcasetheclassis said to implement the given interface types. For a constructed class type, including a nested type declared within a generic type declaration ([§15.3.9.7](classes.md#15397-nested-types-in-generic-classes)), each implemented interface type is obtained by substituting, for each *type_parameter* in the given interface, the corresponding *type_argument* of the constructed type.
338
338
339
-
The set of interfaces for a type declared in multiple parts ([§15.2.7](classes.md#1527-partial-type-declarations)) is the union of the interfaces specified on each part. A particular interface can only be named once on each part, but multiple parts can name the same base interface(s). There shall only be one implementation of each member of any given interface.
339
+
The set of interfaces for a type declared in multiple parts ([§15.2.7](classes.md#1527-partial-type-declarations)) is the union of the interfaces specified on each part. A particular interface can only be named once on each part, but multiple parts can name the same base interfaces. There shall only be one implementation of each member of any given interface.
340
340
341
341
> *Example*: Inthefollowing:
342
342
>
@@ -351,7 +351,7 @@ The set of interfaces for a type declared in multiple parts ([§15.2.7](classes.
351
351
>
352
352
> *end example*
353
353
354
-
Typically, each part provides an implementation of the interface(s)declaredonthatpart; however, thisisnotarequirement. Apartcanprovidetheimplementationforaninterfacedeclaredonadifferentpart.
354
+
Typically, each part provides an implementation of the interfaces declared on that part; however, thisisnotarequirement. Apartcanprovidetheimplementationforaninterfacedeclaredonadifferentpart.
355
355
356
356
> *Example*:
357
357
>
@@ -4547,7 +4547,7 @@ For `extern` operators, the *operator_body* consists simply of a semicolon. For
4547
4547
The following rules apply to all operator declarations:
4548
4548
4549
4549
- An operator declaration shall include both a `public` and a `static` modifier.
4550
-
- The parameter(s) of an operator shall have no modifiers other than `in`.
4550
+
- The parameters of an operator shall have no modifiers other than `in`.
4551
4551
- The signature of an operator ([§15.10.2](classes.md#15102-unary-operators), [§15.10.3](classes.md#15103-binary-operators), [§15.10.4](classes.md#15104-conversion-operators)) shall differ from the signatures of all other operators declared in the same class.
4552
4552
- All types referenced in an operator declaration shall be at least as accessible as the operator itself ([§7.5.5](basic-concepts.md#755-accessibility-constraints)).
4553
4553
- It is an error for the same modifier to appear multiple times in an operator declaration.
Copy file name to clipboardExpand all lines: standard/documentation-comments.md
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -701,7 +701,7 @@ The documentation generator observes the following rules when it generates the I
701
701
T | Type (such as class, delegate, enum, interface, and struct)
702
702
! | Error string; the rest of the string provides information about the error. For example, the documentation generator generates error information for links that cannot be resolved.
703
703
704
-
- The second part of the string is the fully qualified name of the element, starting at the root of the namespace. The name of the element, its enclosing type(s), and namespace are separated by periods. If the name of the item itself has periods, they are replaced by \# (U+0023) characters. (It is assumed that no element has this character in its name.) Type arguments in the fully qualified name, for when a member explicitly implements a member of a generic interface, are encoded by replacing the “`<`” and “`>`” surrounding them with the “`{`” and “`}`” characters.
704
+
- The second part of the string is the fully qualified name of the element, starting at the root of the namespace. The name of the element, its enclosing types, and namespace are separated by periods. If the name of the item itself has periods, they are replaced by \# (U+0023) characters. (It is assumed that no element has this character in its name.) Type arguments in the fully qualified name, for when a member explicitly implements a member of a generic interface, are encoded by replacing the “`<`” and “`>`” surrounding them with the “`{`” and “`}`” characters.
705
705
- For methods and properties with arguments, the argument list follows, enclosed in parentheses. For those without arguments, the parentheses are omitted. The arguments are separated by commas. The encoding of each argument is the same as a CLI signature, as follows:
706
706
- Arguments are represented by their documentation name, which is based on their fully qualified name, modified as follows:
707
707
- Arguments that represent generic types have an appended “`'`” character followed by the number of type parameters
-First, if `F` isagenericmethodandtypeargumentswereprovided, thenthosearesubstitutedforthetypeparametersintheparameterlist. However, iftypeargumentswerenotprovided, nosuchsubstitutionhappens.
1190
-
-Then, anyparameterwhosetypeisopen (i.e., containsatypeparameter; see [§8.4.3](types.md#843-open-and-closed-types)) iselided, alongwithitscorrespondingparameter(s).
1190
+
-Then, anyparameterwhosetypeisopen (i.e., containsatypeparameter; see [§8.4.3](types.md#843-open-and-closed-types)) iselided, alongwithitscorrespondingargument.
1191
1191
1192
1192
For `F` topassthecheck, allofthefollowingshallhold:
1193
1193
@@ -2229,15 +2229,15 @@ If the *primary_no_array_creation_expression* of an *element_access* is a value
2229
2229
2230
2230
For an array access, the *primary_no_array_creation_expression* of the *element_access* shall be a value of an *array_type*. Furthermore, the *argument_list* of an array access is not allowed to contain named arguments. The number of expressions in the *argument_list* shall be the same as the rank of the *array_type*, and each expression shall be of type `int`, `uint`, `long`, or `ulong,` or shall be implicitly convertible to one or more of these types.
2231
2231
2232
-
The result of evaluating an array access is a variable of the element type of the array, namely the array element selected by the value(s) of the expression(s) in the *argument_list*.
2232
+
The result of evaluating an array access is a variable of the element type of the array, namely the array element selected by the values of the expressions in the *argument_list*.
2233
2233
2234
2234
The run-time processing of an array access of the form `P[A]`, where `P` is a *primary_no_array_creation_expression* of an *array_type* and `A` is an *argument_list*, consists of the following steps:
2235
2235
2236
2236
-`P` is evaluated. If this evaluation causes an exception, no further steps are executed.
2237
2237
- The index expressions of the *argument_list* are evaluated in order, from left to right. Following evaluation of each index expression, an implicit conversion ([§10.2](conversions.md#102-implicit-conversions)) to one of the following types is performed: `int`, `uint`, `long`, `ulong`. The first type in this list for which an implicit conversion exists is chosen. For instance, if the index expression is of type `short` then an implicit conversion to `int` is performed, since implicit conversions from `short` to `int` and from `short` to `long` are possible. If evaluation of an index expression or the subsequent implicit conversion causes an exception, then no further index expressions are evaluated and no further steps are executed.
2238
2238
- The value of `P` is checked to be valid. If the value of `P` is `null`, a `System.NullReferenceException` is thrown and no further steps are executed.
2239
2239
- The value of each expression in the *argument_list* is checked against the actual bounds of each dimension of the array instance referenced by `P`. If one or more values are out of range, a `System.IndexOutOfRangeException` is thrown and no further steps are executed.
2240
-
- The location of the array element given by the index expression(s) is computed, and this location becomes the result of the array access.
2240
+
- The location of the array element given by the index expressions is computed, and this location becomes the result of the array access.
Copy file name to clipboardExpand all lines: standard/statements.md
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -449,7 +449,7 @@ ref_local_variable_declarator
449
449
450
450
The initializing *variable_reference* shall have type *type* and meet the same requirements as for a *ref assignment* ([§12.21.3](expressions.md#12213-ref-assignment)).
451
451
452
-
If *ref_kind* is `ref readonly`, the *identifier*(s) being declared are references to variables that are treated as read-only. Otherwise, if *ref_kind* is `ref`, the *identifier*(s) being declared are references to variables that shall be writable.
452
+
If *ref_kind* is `ref readonly`, the *identifier*s being declared are references to variables that are treated as read-only. Otherwise, if *ref_kind* is `ref`, the *identifier*s being declared are references to variables that shall be writable.
453
453
454
454
It is a compile-time error to declare a ref local variable, or a variable of a `ref struct` type, within a method declared with the *method_modifier*`async`, or within an iterator ([§15.14](classes.md#1514-iterators)).
Copy file name to clipboardExpand all lines: standard/unsafe-code.md
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -947,7 +947,7 @@ A fixed-size buffer declaration may include a set of attributes ([§22](attribut
947
947
948
948
A fixed-size buffer declaration is not permitted to include the `static` modifier.
949
949
950
-
The buffer element type of a fixed-size buffer declaration specifies the element type of the buffer(s) introduced by the declaration. The buffer element type shall be one of the predefined types `sbyte`, `byte`, `short`, `ushort`, `int`, `uint`, `long`, `ulong`, `char`, `float`, `double`, or `bool`.
950
+
The buffer element type of a fixed-size buffer declaration specifies the element type of the buffers introduced by the declaration. The buffer element type shall be one of the predefined types `sbyte`, `byte`, `short`, `ushort`, `int`, `uint`, `long`, `ulong`, `char`, `float`, `double`, or `bool`.
951
951
952
952
The buffer element type is followed by a list of fixed-size buffer declarators, each of which introduces a new member. A fixed-size buffer declarator consists of an identifier that names the member, followed by a constant expression enclosed in `[` and `]` tokens. The constant expression denotes the number of elements in the member introduced by that fixed-size buffer declarator. The type of the constant expression shall be implicitly convertible to type `int`, and the value shall be a non-zero positive integer.
0 commit comments