14.6.6 Cast expressions

王朝other·作者佚名  2006-03-10
窄屏简体版  字體: |||超大  

A cast-expression is used to explicitly convert an expression to a given

type.

cast-expression:

( type ) unary-expression

A cast-expression of the form (T)E, where T is a type and E is a

unary-expression, performs an explicit

conversion (?3.2) of the value of E to type T. If no explicit conversion

exists from the type of E to T, a

compile-time error occurs. Otherwise, the result is the value produced by

the explicit conversion. The result

is always classified as a value, even if E denotes a variable.

C# LANGUAGE SPECIFICATION

156

The grammar for a cast-expression leads to certain syntactic ambiguities.

[Example: For example, the

expression (x)?y could either be interpreted as a cast-expression (a cast

of ?y to type x) or as an additiveexpression

combined with a parenthesized-expression (which computes the value x ? y).

end example]

To resolve cast-expression ambiguities, the following rule exists: A

sequence of one or more tokens (?.4)

enclosed in parentheses is considered the start of a cast-expression only

if at least one of the following are

true:

?The sequence of tokens is correct grammar for a type, but not for an

expression.

?The sequence of tokens is correct grammar for a type, and the token

immediately following the closing

parentheses is the token ?~?, the token ?!?, the token ?(?, an identifier (?

.4.1), a literal (?.4.4), or any

keyword (?.4.3) except as and is.

The term ?correct grammar? above means only that the sequence of tokens

must conform to the particular

grammatical production. It specifically does not consider the actual

meaning of any constituent identifiers.

[Example: For example, if x and y are identifiers, then x.y is correct

grammar for a type, even if x.y

doesn?t actually denote a type. end example]

[Note: From the disambiguation rule, it follows that, if x and y are

identifiers, (x)y, (x)(y), and (x)(-y)

are cast-expressions, but (x)-y is not, even if x identifies a type.

However, if x is a keyword that identifies

a predefined type (such as int), then all four forms are cast-expressions

(because such a keyword could not

possibly be an expression by itself). end note]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航