1、示例C#程序代码
下面是一个简单的代码,该代码将打印输出Hello World
。
MyClass.cs
using System; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
示例说明
用C#运行的每一行代码都必须在class
内。在我们的示例中,我们将类命名为Program
。类应始终以大写首字母开头。
注意:C#区分大小写:MyClass 和 myclass 具有不同的含义。
和Java不一样,C#文件的名称必须不是必须和类名称相同。 保存文件时,需要使用类名保存并在文件名的末尾添加 .cs。 要在计算机上运行上面的示例,要确保安装了VS(Microsoft Visual Studio),有关如何安装VS及执行C#代码方法,可以参考C# 入门教程,输出应为:
Hello World
2、Main方法
Main()
方法是必需的,将在每个C#程序中看到它:
static void Main(string[] args)
Main()
方法中的任何代码都将执行。 每个C#控制台程序都有一个class
类名,并且每个程序都必须包含Main()
方法。
3、 Console.WriteLine()
在Main()
方法内部,我们可以使用WriteLine()方法在屏幕上打印输出一行文本:
static void Main(string[] args) { Console.WriteLine("Hello World!"); }
注意:大括号{}
标记代码块的开始和结束。每个代码语句必须以分号结尾。
4、基本语法
关于C#程序,以下几点基本方法非常重要:
大小写敏感:C# 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstClass 。
方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
源文件名:文件名的后缀为 .cs。
主方法入口:所有的C# 程序由 public static void Main(String[] args)
方法开始执行。
5、C# 关键字
下面列出了C# 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
1)保留关键字
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 |
2)上下文关键字
add | alias | ascending | descending | dynamic | from | get | |
global | group | into | join | let | orderby | partial (type) | |
partial (method) | remove | select | set |
3)解释说明
void | 用作方法的返回类型时, void关键字指定方法不返回值。 在方法的参数列表中不允许使用 void。 采用以下形式声明一个无参数的、不返回值的方法: |
Var | 在方法范围中声明的变量可以具有隐式类型 var。 隐式类型的本地变量是强类型变量(就好像您已经声明该类型一样), 但由编译器确定类型。 有返回值 |
Class | 类是使用关键字 class 声明的 |
delegate | 是一种可用于封装命名或匿名方法的引用类型。 委托类似于 C++ 中的函数指针;但是, 委托是类型安全和可靠的。 |
object | 类型在 .NET Framework 中是 Object 的别名。在 C#的统一类型系统中, 所有类型(预定义类型、用户定义类型、引用类型和值类型) 都是直接或间接从 Object 继承的。可以将任何类型的值赋给 object 类型的变量。将值类型的变量转换为对象的过程称为“装箱”。 将对象类型的变量转换为值类型的过程称为“取消装箱”。 |
string | 类型表示零或更多 Unicode 字符组成的序列。 string 是 .NET Framework 中 String 的别名。 尽管 string是引用类型,但定义相等运算符(== 和 !=) 是为了比较 string 对象(而不是引用)的值。 这使得对字符串相等性的测试更为直观。 |
Override | 要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现, 必须使用 override 修饰符。 |
virtual | 关键字用于修饰方法、属性、索引器或事件声明, 并使它们可以在派生类中被重写。 例如,此方法可被任何继承它的类重写。 |
volatile | 关键字指示一个字段可以由多个同时执行的线程修改。 声明为 volatile的字段不受编译器优化 (假定由单个线程访问)的限制。 这样可以确保该字段在任何时间呈现的都是最新的值。 |
unsafe | 关键字表示不安全上下文, 该上下文是任何涉及指针的操作所必需的。 |
static | 使用 static 修饰符声明属于类型本身 而不是属于特定对象的静态成员。 static修饰符可用于类、字段、方法、属性、运算符、 事件和构造函数,但不能用于索引器、 析构函数或类以外的类型。 |
sealed | 当对一个类应用 sealed 修饰符时, 此修饰符会阻止其他类从该类继承。在下面的示例中, 类 B 从类 A 继承,但是任何类都不能从类 B 继承。 |
readonly | 关键字是可以在字段上使用的修饰符。 当字段声明包括 readonly修饰符时, 该声明引入的字段赋值只能作为声明的一部分出现, 或者出现在同一类的构造函数中。 |
extern | 修饰符用于声明在外部实现的方法。 extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 属性一起使用。在这种情况下, 还必须将方法声明为 static |
event | 关键字用于在发行者类中声明事件。 |
const | 关键字用于修改字段或局部变量的声明。 它指定字段或局部变量的值是常数,不能被修改。 |
abstract | 修饰符可以和类、方法、属性、索引器及事件一起使用。 在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。 标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。 |
internal | 关键字是类型和类型成员的访问修饰符。 只有在同一程序集的文件中,内部类型或成员才是可访问的 |
private | 关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。 私有成员只有在声明它们的类和结构体中才是可访问的 |
protected | 关键字是一个成员访问修饰符。 受保护成员在其所在的类中可由派生类实例访问。 |
public | 关键字是类型和类型成员的访问修饰符。 公共访问是允许的最高访问级别。 |
abstract | 可以和类、方法、属性、索引器及事件一起使用, 标识一个可以扩展但不能被实体化的、必须被实现的类或方法。 |
as | 一个转换操作符,如果转换失败,就返回null。 |
base | 用于访问被派生类或构造中的同名成员隐藏的基类成员。 |
catch | 定义一个代码块,在特定类型异常抛出时, 执行块内代码。参见try和finally。 |
checked | 既是操作符又是语句。确保编译器运行时, 检查整数类型操作或转换时出现的溢出。 |
const | 标识一个可在编译时计算出来的变量值, 即一经指派不可修改的值。 |
delegate | 指定一个声明为一种委托类型。 委托把方法封装为可调用实体,能在委托实体中调用。 |
enum | 表示一个已命名常量群集的值类型。 |
event | 允许一个类或对象提供通知的成员,他必须是委托类型。 |
explicit | 一个定义用户自定义转换操作符的操作符, 通常用来将内建类型转换为用户定义类型或反向操作。 必须再转换时调用显示转换操作符。 |
extern | 标识一个将在外部(通常不是c#语言)实现的方法。 |
finally | 定义一个代码块,在程序控制离开try代码快后执行。 参见try和catch。 |
fixed | 在一个代码块执行时,在固定内存位置为一个变量指派一个指针。 |
foreach | 用于遍历一个群集的元素。 |
goto | 一个跳转语句,将程序执行重定向到一个标签语句。 |
implicit | 一个操作符,定义一个用户定义的转换操作符。 通常用来将预定义类型转换为用户定义类型或反向操作。 隐式转换操作符必须在转换时使用。 |
interface | 将一个声明指定为接口类型, 即实现类或构造必须遵循的合同。 |
internal | 一个访问修饰符。 |
namespace | 定义一个逻辑组的类型和命名空间。 |
operator | 用来声明或多载一个操作符。 |
out | 标识一个参数值会受影响的参数, 但在传入方法时,该参数无需先初始化。 |
params | 声明一个参数数组。如果使用, 必须修改指定的最后一个参数。允许可选参数。 |
readonly | 标识一个变量的值在初始化后不可修改。 |
ref | 标识一个参数值可能会受影响的参数。 |
sealed | 防止类型被派生,防止方法和property被覆载。 |
sizeof | 一个操作符,以byte为单位返回一个值类型的长度。 |
stackalloc | 返回在堆上分配的一个内存块的指针。 |
struct | struct是一种值类型, 可以声明常量、字段、方法、property、 索引器、操作符、构造器和内嵌类型。 |
throw | 抛出一个异常。 |
try | 异常处理代码块的组成部分之一。 try代码块包括可能会抛出异常的代码。 参阅catch和finally关键字。 |
typeof | 一个操作符,返回传入参数的类型。 |
unchecked | 禁止溢出检查。 |
unsafe | 标注包含指针操作的代码块、方法或类。 |
using | 当用于命名空间时,using关键字允许访问该命名空间中的类型, 而无需指定其全名。也用于定义finalization操作的范围。 |
virtual | 一个方法修饰符,标识可被覆载的方法。 |
volatile | 标识一个可被操作系统、某些硬件设备或并发线程修改的attribute。 |