C# 关键字,运算符,预处理器指令

来源:互联网 发布:启凡网络 编辑:程序博客网 时间:2024/06/10 20:12

关键字是对编译器具有特殊意义的预定义保留标识符。它们不能在程序中用作标识符,除非它们有一个@ 前缀。例如,@if 是有效的标识符,但if 不是,因为 if 是关键字。

本主题中的第一个表列出的关键字在 C# 程序的任何部分都是保留标识符。本主题中的第二个表列出了 C# 中的上下文关键字。上下文关键字仅在受限制的程序上下文中具有特殊含义,并且可在该上下文外部用作标识符。通常,在将新关键字添加到 C# 语言的同时,也会将它们添加为上下文关键字,以便避免破坏用该语言的早期版本编写的程序。


abstract

as

base

bool

break

byte

case

catch

char

checked

class

const

continue

decimal

default

delegate

do

double

else

enum

event

explicit

extern

false

finally

fixed

float

for

foreach

goto

if

implicit

in

in (generic modifier)

int

interface

internal

is

lock

long

namespace

new

null

object

operator

out

out (generic modifier)

override

params

private

protected

public

readonly

ref

return

sbyte

sealed

short

sizeof

stackalloc

static

string

struct

switch

this

throw

true

try

typeof

uint

ulong

unchecked

unsafe

ushort

using

virtual

void

volatile

while


上下文关键字

上下文关键字用于提供代码中的特定含义,但它不是 C# 中的保留字。某些上下文关键字(如partialwhere)在两个或更多个上下文中具有特殊含义。



add

alias

ascending

async

await

descending

dynamic

from

get

global

group

into

join

let

orderby

partial (type)

partial (method)

remove

select

set

value

var

where (generic type constraint)

where (query clause)

yield

 



C# 运算符

C# 提供了许多运算符,这些运算符是指定要在表达式中执行哪些操作(数学、索引、函数调用等等)的符号。在应用于用户定义类型之前,你可以对许多运算符进行重载以更改其含义。

针对整型类型的运算(如 ==!=<>&|)通常可用于枚举 (enum) 类型。

以下章节按最高优先级到最低优先级的顺序列示 C# 运算符。各章节内运算符的优先级相同。

主要运算符

以下是具有最高优先级的运算符。请注意,你可以单击运算符转到包含示例的详细页面。

x.y - 成员访问。

x?.y - null 条件成员访问。如果左边操作数为 null,则返回 null。

f(x) - 函数调用。

a[x] - 聚合对象索引。

a?[x] - null 条件索引。如果左边操作数为 null,则返回 null。

x++ - 后缀递增。先返回 x 值,然后用加 1(通常加整数 1)后的 x 值更新存储位置。

x-- - 后缀递减。先返回 x 值,然后用减 1(通常减整数 1)后的 x 值更新存储位置。

New - 类型实例化。

Typeof - 返回表示操作数的 System.Type 对象。

Checked - 对整数运算启用溢出检查。

Unchecked - 对整数运算禁用溢出检查。这是默认的编译器行为。

default(T) - 返回类型 T 的默认初始化值,T 为引用类型时返回 null,T 为数值类型时返回零,T 为结构类型时返回填充为零/null 的成员。

Delegate - 声明并返回一个委托实例。

Sizeof - 返回类型操作数的大小(以字节为单位)。

-> - 取消指针引用与成员访问相结合。

一元运算符

这些运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击运算符转到包含示例的详细页面。

+x - 返回 x 值。

-x - 数值求反。

!x - 逻辑求反。

~x - 按位求补。

++x - 前缀递增。先用加 1(通常加整数 1)后的 x 值更新存储位置,然后返回 x 值。

--x - 前缀递减。先用减 1(通常减整数 1)后的 x 值更新存储位置,然后返回 x 值。

(T)x - 类型转换。

Await - 等待Task

&x - 地址。

*x - 取消引用。

乘法运算符

这些运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击运算符转到包含示例的详细页面。

x * y - 乘法。

x / y - 除法。如果操作数均为整数,则结果为整数,舍去小数(例如,-7 / 2 is -3)。

x % y - 取模。如果操作数均为整数,则返回 x 除以 y 后的余数。如果q = x / yr = x % y,则 x = q * y + r

加法运算符

这些运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击运算符转到包含示例的详细页面。

x + y - 加法。

x – y - 减法。

移位运算符

这些运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击运算符转到包含示例的详细页面。

x << y - 向左移位,右边移出的空位补零。

x >> y - 向右移位。如果左操作数是intlong,则左位数补符号位。如果左操作数是uintulong,则左位数补零。

关系和类型测试运算符

这些运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击运算符转到包含示例的详细页面。

x < y - 小于(如果 x 小于 y,则为 true)。

x > y - 大于(如果 x 大于 y,则为 true)。

x <= y - 小于等于。

x >= y - 大于等于。

Is - 类型兼容性。如果求值后的左操作数可以转换为右操作数中指定的类型(静态类型),则返回 true。

As - 类型转换。返回左操作数并转换为右操作数中指定的类型(静态类型),但as 返回 null,其中 (T)x 会引发异常。

相等运算符

这些运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击运算符转到包含示例的详细页面。

x == y - 相等。默认情况下,对于string 以外的引用类型,此运算符返回引用相等(标识测试)。但是,类型可以重载==,因此,如果你想测试标识,最好对 object 使用 ReferenceEquals 方法。

x != y - 不相等。请参阅有关== 的注释。如果某个类型重载 ==,则它必须重载 !=

逻辑 AND 运算符

此运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击该运算符转到包含示例的详细页面。

x & y - 逻辑或位 AND。与整数类型一起使用,并且通常允许enum 类型。

逻辑 XOR 运算符

此运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击该运算符转到包含示例的详细页面。

x ^ y - 逻辑或位 XOR。通常可以将此运算符与整数类型和enum 类型一起使用。

逻辑 OR 运算符

此运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击该运算符转到包含示例的详细页面。

x | y - 逻辑或位 OR。与整数类型一起使用,并且通常允许enum 类型。

条件 AND 运算符

此运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击该运算符转到包含示例的详细页面。

x && y - 逻辑 AND。如果第一个操作数为 false,则 C# 不对第二个操作数求值。

条件 OR 运算符

此运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击该运算符转到包含示例的详细页面。

x || y - 逻辑 OR。如果第一个操作数为 true,则 C# 不对第二个操作数求值。

Null 合并运算符

此运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击该运算符转到包含示例的详细页面。

x ?? y - 如果不为null,则返回 x;否则返回 y

条件运算符

此运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击该运算符转到包含示例的详细页面。

t ? x : y - 如果测试t 为 true,则求值并返回 x;否则,求值并返回 y

赋值和 Lambda 运算符

这些运算符的优先级比下一章节高,比上一章节低。请注意,你可以单击运算符转到包含示例的详细页面。

x = y - 赋值。

x += y - 递增。x 值加 y 值,结果存储在 x 中,并返回新值。如果 x 指定event,则 y 必须是 C# 作为事件处理程序添加的相应函数。

x -= y - 递减。x 值减 y 值,结果存储在 x 中,并返回新值。如果 x 指定event,则 y 必须是 C# 作为事件处理程序删除的相应函数

x *= y - 乘法赋值。x 值乘以 y 值,结果存储在 x 中,并返回新值。

x /= y - 除法赋值。x 值除以 y 值,结果存储在 x 中,并返回新值。

x %= y - 取模赋值。x 值除以 y 值,余数存储在 x 中,并返回新值。

x &= y - AND 赋值。y 值和 x 值相与,结果存储在 x 中,并返回新值。

x |= y - OR 赋值。y 值和 x 值相或,结果存储在 x 中,并返回新值。

x ^= y - XOR 赋值。y 值和 x 值相异或,结果存储在 x 中,并返回新值。

x <<= y - 左移赋值。x 值向左移动 y 位,结果存储在 x 中,并返回新值。

x >>= y - 右移赋值。x 值向右移动 y 位,结果存储在 x 中,并返回新值。

=> - lambda 声明。

算术溢出

算术运算符(+、-、*、/)产生的结果可能会超出所涉数值类型的可能值的范围。详细信息应参考特定运算符的相关章节,而一般情况下:

  • 整数算术溢出或者引发 OverflowException,或者放弃结果的最高有效位。整数被零除总是引发DivideByZeroException

  • 浮点算术溢出或被零除从不引发异常,因为浮点类型基于 IEEE 754,因此可以表示无穷大和 NaN(非数值)。

  • 小数算术溢出总是引发OverflowException。小数被零除总是引发 DivideByZeroException。

当发生整数溢出时,产生的结果取决于执行上下文,该上下文可为 checked 或 unchecked。在 checked 上下文中引发OverflowException。在 unchecked 上下文中,放弃结果的最高有效位并继续执行。因此,C# 让你有机会选择处理或忽略溢出。

除算术运算符以外,整型类型之间的转换也会导致溢出(例如,将 long 转换为 int)并受 checked 或 unchecked 执行的限制。但是,位运算符和移位运算符永远不会导致溢出。

C# 预处理器指令

本节包含有关以下 C# 预处理器指令的信息。

#if

#else

#elif

#endif

# define

#undef

#warning

#error

#line

#region

#endregion

#pragma

#pragma warning

#pragma checksum

请参见各个主题有关更多信息和示例。

虽然编译器没有单独的预处理器,本节中介绍的处理指令,就象一个。它们在条件编译用于帮助。与 C 和 C++ 指令不同,不能使用这些指令创建宏。

预处理器指令必须是行上的唯一指令。

C# Compiler Options

本节内容

Command-line Building With csc.exe

有关从命令行生成 Visual C# 应用程序的信息。

How to: Set Environment Variables for the Visual Studio Command Line

提供运行 vsvars32.bat 以启用命令行编译的步骤。

部署 C# 应用程序

描述用于部署 C# 应用程序的选项。

按类别列出的 C# 编译器选项

编译器选项的分类列表。

按字母顺序列出的 C# 编译器选项

按字母顺序排序的编译器选项列表。

C# Compiler Errors

某些 C# 编译器错误有相应的主题说明错误生成的原因,在某些情况下还说明了如何修复错误。若要了解某个特定错误消息是否有帮助信息,请使用以下步骤之一。

  • 查看错误号 (例如 CS0029),在 “输出”窗口为,然后搜索 MSDN。

  • 选择该错误号 (例如 CS0029),在 “输出”窗口,然后选择 F1 键。

  • 在“索引”中的“查找”框中键入错误号。

如果这些步骤都不会产生有关该错误的信息,请转到结尾此页,然后发送包含错误数或文本的反馈。

有关在 C# 中如何配置错误和警告选项的信息,请参见“项目设计器”->“生成”页 (C#)。

System_CAPS_note注意

以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 这些元素取决于你所使用的 Visual Studio 版本和你所使用的设置。 有关详细信息,请参阅个性化 Visual Studio IDE。



0 0
原创粉丝点击