Skip to content

Commit 1731e15

Browse files
authored
Replace all occurrences of "may not" (#1332)
* 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
1 parent a93bf43 commit 1731e15

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

standard/expressions.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ Dynamic binding allows C# programs to interact with dynamic objects, i.e., obje
9797
9898
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.
9999
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.
101101
102102
### 12.3.4 Types of subexpressions
103103
@@ -574,7 +574,7 @@ The *argument_value* can take one of the following forms:
574574

575575
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.
576576

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.
578578

579579
#### 12.6.2.2 Corresponding parameters
580580

@@ -2200,7 +2200,7 @@ When recognising a *primary_expression* if both the *element_access* and *pointe
22002200

22012201
The *argument_list* of an *element_access* shall not contain `out` or `ref` arguments.
22022202

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*.
22042204

22052205
> *Note*: This restriction exists to disallow potentially confusing code such as:
22062206
>
@@ -3666,7 +3666,7 @@ An *await_expression* is only allowed in the body of an async function ([§15.15
36663666
36673667
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.
36683668

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.
36703670

36713671
#### 12.9.8.2 Awaitable expressions
36723672

0 commit comments

Comments
 (0)