艾伟:C#基本语法简介

简介: 一、系统数据类型和C#简化符号  和各任何编程语言一样,C#定义了一组内建数据类型。每种类型都有对应的C#关键字、取值范围和作用,如系统类型中表示真实的或者虚假的类型为 System.Boolean,C#简化符号为bool,范围true或false;又如uint对应的系统类型是System.UInt32,范围 0~4294967295,代表一个无符号的32位数。

一、系统数据类型和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# 提供大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。通常允许对枚举进行整型运算,例如 ==、!=、<、>、& lt;=、>=、^、&、|、~、++、-- 和 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语句一个不错的特性是,除了数值数据之处,我们还可以运算字符串数据:

      static void ExecuteSwitchOnString()
{
Console.WriteLine(
"C# or VB");
Console.Write(
"Please pick your language preference: ");

string langChoice = Console.ReadLine();
switch (langChoice)
{
case "C#":
Console.WriteLine(
"Good choice, C# is a fine language.");
break;
case "VB":
Console.WriteLine(
"VB .NET: OOP, multithreading and more!");
break;
default:
Console.WriteLine(
"Wellgood luck with that!");
break;
}
}
目录
相关文章
|
6月前
|
存储 开发框架 .NET
【C#】C# 基础语法与游戏开发
【1月更文挑战第21天】【C#】C# 基础语法与游戏开发
C#的基本语法结构学习案例详解
C#的基本语法结构学习案例详解
60 0
|
自然语言处理 Java 编译器
C#OOP之一面向对象简介
C#OOP之一面向对象简介
65 0
|
2月前
|
存储 C# 索引
C# 一分钟浅谈:变量与数据类型简介
【9月更文挑战第1天】在 C# 编程中,了解变量与数据类型至关重要。本文详细介绍了 C# 中的值类型(如整数、浮点数、布尔值等)和引用类型(如类、接口、数组、字符串)。通过示例代码展示了变量的声明与使用方法,并针对数据类型转换错误、变量未初始化及数值溢出等常见问题提供了解决方案。正确选择数据类型不仅能提升程序性能,还可避免潜在错误,有助于编写高质量代码。
129 47
|
6月前
|
C#
C#的基本语法结构学习
【5月更文挑战第17天】C#基础语法包括变量(如`int x = 10`)、常量(`const int MAX_VALUE = 100`)、运算符(如算术和比较运算符)、控制语句(if、for、while等)和函数声明(`int Add(int x, int y) { return x + y; }`)。这些构成C#程序的基本元素。
75 0
|
3月前
|
存储 C# 索引
C# 集合语法全解
C# 集合语法全解
29 0
|
6月前
|
开发框架 安全 .NET
C# .NET面试系列一:基础语法
<h2>基础语法 #### 1. 字符串中 string str = null 和 string str = "" 和 string str = string.Empty 的区别? string str=null: ```c# 这表示字符串变量str被初始化为null,即它不引用任何对象。这与空字符串是不同的,因为空字符串是一个具有零长度的字符串对象,不会分配内存空间 ``` string.Empty: ```c# 这表示字符串变量str被初始化为空字符串,即一个具有零长度的字符串对象。这与null是不同的,因为str引用了一个空字符串对象 ``` string str="" :
120 1
|
6月前
|
C#
C#语法快速热身
C#语法快速热身
|
6月前
|
存储 C# 开发者
C#基础语法
C#基础语法
34 0
|
6月前
|
存储 C#
C#基础语法(类和对象)
C#基础语法(类和对象)
39 2