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
* Replace all occurrences of "may not"
All 4 occurrences were in expressions.md. The one in introduction.md is part of an MS copyright statement that is commented out, so is not part of the standard, and has been left there.
* minor tweak
Copy file name to clipboardExpand all lines: standard/expressions.md
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -97,7 +97,7 @@ Dynamic binding allows C# programs to interact with dynamic objects, i.e., obje
97
97
98
98
The mechanism by which a dynamic object implements its own semantics is implementation-defined. A given interface – again implementation-defined – is implemented by dynamic objects to signal to the C# run-time that they have special semantics. Thus, whenever operations on a dynamic object are dynamically bound, their own binding semantics, rather than those of C# as specified in this specification, take over.
99
99
100
-
While the purpose of dynamic binding is to allow interoperation with dynamic objects, C# allows dynamic binding on all objects, whether they are dynamic or not. This allows for a smoother integration of dynamic objects, as the results of operations on them may not themselves be dynamic objects, but are still of a type unknown to the programmer at compile-time. Also, dynamic binding can help eliminate error-prone reflection-based code even when no objects involved are dynamic objects.
100
+
While the purpose of dynamic binding is to allow interoperation with dynamic objects, C# allows dynamic binding on all objects, whether they are dynamic or not. This allows for a smoother integration of dynamic objects, as the results of operations on them are not always dynamic objects, but are still of a type unknown to the programmer at compile-time. Also, dynamic binding can help eliminate error-prone reflection-based code even when no objects involved are dynamic objects.
101
101
102
102
### 12.3.4 Types of subexpressions
103
103
@@ -574,7 +574,7 @@ The *argument_value* can take one of the following forms:
574
574
575
575
The form determines the ***parameter-passing mode*** of the argument: *value*, *input*, *reference*, or *output*, respectively. However, as mentioned above, an argument with value passing mode, might be transformed into one with input passing mode.
576
576
577
-
Passing a volatile field ([§15.5.4](classes.md#1554-volatile-fields)) as an input, output, or reference parameter causes a warning, since the field may not be treated as volatile by the invoked method.
577
+
Passing a volatile field ([§15.5.4](classes.md#1554-volatile-fields)) as an input, output, or reference parameter causes a warning, since the field cannot be treated as volatile by the invoked method.
578
578
579
579
#### 12.6.2.2 Corresponding parameters
580
580
@@ -2200,7 +2200,7 @@ When recognising a *primary_expression* if both the *element_access* and *pointe
2200
2200
2201
2201
The *argument_list* of an *element_access* shall not contain `out` or `ref` arguments.
2202
2202
2203
-
The *primary_expression* of an *element_access*may not be an *array_creation_expression* unless it includes an *array_initializer*, or a *stackalloc_expression* unless it includes a *stackalloc_initializer*.
2203
+
The *primary_expression* of an *element_access*shall not be an *array_creation_expression* unless it includes an *array_initializer*, or a *stackalloc_expression* unless it includes a *stackalloc_initializer*.
2204
2204
2205
2205
> *Note*: This restriction exists to disallow potentially confusing code such as:
2206
2206
>
@@ -3666,7 +3666,7 @@ An *await_expression* is only allowed in the body of an async function ([§15.15
3666
3666
3667
3667
Inside an async function, `await` shall not be used as an *available_identifier* although the verbatim identifier `@await` may be used. There is therefore no syntactic ambiguity between *await_expression*s and various expressions involving identifiers. Outside of async functions, `await` acts as a normal identifier.
3668
3668
3669
-
The operand of an *await_expression* is called the ***task***. It represents an asynchronous operation that may or may not be complete at the time the *await_expression* is evaluated. The purpose of the `await` operator is to suspend execution of the enclosing async function until the awaited task is complete, and then obtain its outcome.
3669
+
The operand of an *await_expression* is called the ***task***. It represents an asynchronous operation that might or might not be complete at the time the *await_expression* is evaluated. The purpose of the `await` operator is to suspend execution of the enclosing async function until the awaited task is complete, and then obtain its outcome.
0 commit comments