C#基本语法简介

一、系统数据类型和C#简化符号

     和各任何编程语言一样,C#定义了一组内建数据类型。每种类型都有对应的C#关键字、取值范围和作用,如系统类型中表示真实的或者虚假的类型为System.Boolean,C#简化符号为bool,范围true或false;又如uint对应的系统类型是System.UInt32,范围0~4294967295,代表一个无符号的32位数。其中bool是遵循CLS(公共语言规范),而uint则不遵循CLS(符合CLS的.NET代码可以被任何托管编程语言使用,不止是C#,还有VB.NET和托管C++等)。

C#内建的系统型有15个,请查看.NET Framework 3.5文档来熟悉它们。

 

二、变量声明和初始化。

如果要声明一个数据类型作为变量,可以通过在变量名之前指定类型来实现,还可以使用全名分配数据类型。如:

bool mybool = false;

string myString;

myString = "This is a string.";

System.Int32 i1 = 0, i2, i3 = 56;

在使用变量前必须先对变量赋值,否则会收到一个编译错误(如上文加上" i2 = i2 +5 ",是不能通过编译的)。内建数据类型还支持构造函数(对于构造函数,后面章节会有介绍),这不允许我们使用new关键字来创建变量,它将变量自动设置为其默认值:

int i4 = new int(); // i4设置为0。

i4 = i4 + 5 ;         // i4现在的值为5。

 

三、数据转换

不同类型的数据是可以转换的。

按转换前后的数据的位数变化可分为窄化转换和宽化转换:当一种类型的值转换为大小相等或更大的另一类型时,则发生宽化转换(也叫扩大转换);当一种类型的值转换为较小的另一种类型时,则发生窄化转换(也叫收缩转换)。宽化转向不会导致数据丢失,因此允许隐式进行。但窄化转换因为有数据丢失的风险(称为溢出),将导致编译错误。如果希望通知编译器我们想要处理窄化运算引起的可能的数据丢失,就必须使用C#强制转换运算符()来进行显式强制转换:

byte myByte = 0;

int myInt = 200;

myByte = (byte)myInt;

如果我们在构建一个不能接受数据丢失的应用程序,C#提供的checked关键字将确保数据丢失肯定会被检测到。

myByte = checked(byte)myInt;

如果发生数据丢失,将发生一个运行时异常(对于异常,后面将深入讨论)。另外,C#编译器还提供/checked标志,可以设定项目级别的溢出检测。与checked相对的还有unchecked关键字,请查阅相关文档进行了解。

 

四、运算符

    C# 提供大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。通常允许对枚举进行整型运算,例如 ==、!=、<、>、<=、>=、^、&、|、~、++、-- 和 sizeof()。此外,很多运算符可被用户重载,由此在应用到用户定义的类型时更改这些运算符的含义。各运算符的用法及优先级,请查阅相关文档。

    新增的运算符??:如果 ?? 运算符的左操作数非 null,该运算符将返回左操作数,否则返回右操作数。

    另一个新增的Lambda运算符(=>)会在后面章节中讲述。

 

五、流程控制

1.C#迭代结循环构

除了基本的for循环,while循环及do/while循环,C#还允许通过使用foreach关键字遍历数组中的所有项:

string[] carTypes = {"Ford","BMW","Yugo","Honda"}; 

foreach(string c in carTypes)

Console.WriteLine(c);

2.C#条件结构

if/else语句。C和C++的程序员要注意,C#中的if/else语句只能作用于布尔表达式,不能用于诸如-1、0这样的值。

switch语句。C#switch语句一个不错的特性是,除了数值数据之处,我们还可以运算字符串数据:


Code
posted on 2009-05-19 02:19  to be a talent  阅读(578)  评论(0编辑  收藏  举报