C# 语法结构
像人类语言一样,计算机语言也具有词汇结构。 C# 程序的源代码由令牌组成。 令牌是原子代码元素。 在 C# 中,我们具有注释,变量,字面值,空格,运算符,定界符和关键字。
C# 程序由 Unicode 字符集中的字符组成。
C# 注释
注释被人类用来阐明源代码。 C# 中有三种类型的注释。 单行注释,多行注释和 XML 注释。 可以将 XML 注释提取到 HTML 文件。
多行注释用/* */
字符括起来。 单行注释以两个正斜杠开头。
Program.cs
using System;
/*
This is comments.cs
Author: Jan Bodnar
ZetCode 2019
*/
namespace Comments
{
// Program starts here
class Program
{
static void Main(string[] args)
{
Console.WriteLine("This is Comments program");
}
}
}
C# 编译器将忽略注释。
/*
This is comments.cs
/* Author: Jan Bodnar */
ZetCode 2019
*/
注释不能嵌套。 上面的代码无法编译。
C# 空白字符
C# 中的空格字符用于分隔源文件中的标记。 它还用于提高源代码的可读性。
int i = 0;
在某些地方需要空格。 例如,在int
关键字和变量名之间。 在其他地方,禁止使用空格。 它们不能出现在变量标识符或语言关键字中。
int a=1;
int b = 2;
int c = 3;
标记之间放置的空间量与 C# 编译器无关。
C# 变量
变量是保存值的标识符。 在编程中,我们说我们为变量分配了一个值。 从技术上讲,变量是对存储值的计算机内存的引用。 变量名称可以包含字母数字字符和下划线。 标识符可以以字符或下划线开头。 它可能不能以数字开头。 变量名称区分大小写。 这意味着Name
,name
和NAME
引用了三个不同的变量。 变量名称也不能与语言关键字匹配。 (实际上,如果在关键字前面加上@
字符,则可以使用关键字作为标识符。但这不是一个好的编程习惯。)
string name23;
int _col;
Date birth_date;
这些是有效的 C# 标识符。
string 23name;
int %col;
Date birth date;
这些是无效的 C# 标识符。
Program.cs
using System;
namespace Identifiers
{
class Program
{
static void Main(string[] args)
{
string name = "Robert";
string Name = "Julia";
Console.WriteLine(name);
Console.WriteLine(Name);
}
}
}
标识符区分大小写。 Name
和name
是两个不同的标识符。 在 Visual Basic(C# 语言的表亲)中,这是不可能的。 用这种语言,变量名不区分大小写。
$ dotnet run
Robert
Julia
这是程序输出。
C# 字面值
字面值是类型的特定值的字面值表示。 字面值类型包括布尔值,整数,浮点数,字符串,字符和日期。 从技术上讲,字面值将在编译时分配一个值,而变量将在运行时分配。
int age = 29;
string nationality = "Hungarian";
在这里,我们为变量分配了两个字面值。 数字 29 和字符串"Hungarian"
是字面值。
Program.cs
using System;
namespace Literals
{
class Program
{
static void Main(string[] args)
{
bool sng = true;
string name = "James";
string job = null;
double weight = 68.5;
DateTime born = DateTime.Parse("November 12, 1987");
Console.WriteLine("His name is {0}", name);
if (sng)
{
Console.WriteLine("He is single");
} else
{
Console.WriteLine("He is in a relationship");
}
Console.WriteLine("His job is {0}", job);
Console.WriteLine("He weighs {0} kilograms", weight);
Console.WriteLine("He was born in {0}",
string.Format("{0:yyyy}", born));
}
}
}
在上面的示例中,我们有一些字面值。 bool
字面值可能具有值true
或false
。 "James"
是字符串字面值。 null
代表任何数据类型的默认值。 数字 23 是Integer
字面值。 数字 68.5 是浮点字面值。 最后,1987 年 11 月 12 日是日期字面值。
$ dotnet run
His name is James
He is single
His job is
He weighs 68.5 kilograms
He was born in 1987
这是程序的输出。
C# 运算符
运算符是用于对某个值执行操作的符号。 表达式中使用运算符来描述涉及一个或多个操作数的运算。
+ - * / % ^ & | ! ~
= += -= *= /= %= ^= ++ --
== != < > &= >>= <<= >= <=
|| && >> << ?:
这是 C# 运算符的部分列表。 我们将在本教程的后面部分讨论运算符。
C# 分隔符
分隔符是一个或多个字符的序列,用于指定纯文本或其他数据流中单独的独立区域之间的边界。
[ ] ( ) { } , : ;
string language = "C#";
双精度字符用于标记字符串的开头和结尾。 分号(;
)字符用于结束每个 C# 语句。
Console.WriteLine("Today is {0}", DateTime.Today.ToString("M/d"));
括号(圆括号)用于标记方法签名。 签名由方法参数组成。 圆括号用于表示求值值。
int[] array = new int[5] {1, 2, 3, 4, 5};
方括号[]
用于表示数组类型。 它们还用于访问或修改数组元素。 圆括号{}
也用于初始化数组。 花括号也用于变量插值或包围方法或类的主体。
int a, b, c;
逗号字符可用于在同一行代码上使用多个声明。
C# 关键字
关键字是 C# 语言中的保留字。 关键字用于在计算机程序中执行特定任务。 例如,定义变量,执行重复性任务或执行逻辑操作。
C# 包含丰富的关键字。 其中许多内容将在本教程中进行解释。 关键字包括if
,else
,for
,while
,base
,false
,float
,catch
,this
等。
Program.cs
using System;
namespace Keywords
{
class Program
{
static void Main(string[] args)
{
int i;
for(i = 0; i<= 5; i++)
{
Console.WriteLine(i);
}
}
}
}
在上面的示例中,我们使用了几个关键字。 using
,public
,static
,void
,int
和for
是 C# 关键字。
C# 约定
约定是程序员在编写源代码时遵循的最佳实践。 每种语言可以有自己的约定集。 约定不是严格的规则; 它们只是编写高质量代码的建议。 我们提到了许多 C# 程序员都认可的一些约定。 (并且通常也被其他程序员使用)。
- 类,接口和枚举以大写字母开头。
- 接口名称以 I 字母开头。
- 注释放在单独的行中,而不是在代码行的末尾。
- 方法名称以大写字母开头。
- 每行仅放置一个语句或声明。
- 标识符易于阅读且有意义。
- 标识符使用 Pascal 大小写编写,例如随后的每个单词都以大写字母开头。
- 同时使用
public
关键字和static
关键字之前。 Main()
方法的参数名称称为args
。- 常量以大写形式编写。
- 代码块中的大括号从新行开始。
在 C# 教程的这一部分中,我们介绍了 C# 语言的基本词汇。