C#程序结构与基本语法
C# 程序结构
Hello World 实例
一个 C# 程序主要包括以下部分:
- 命名空间声明(Namespace declaration)
- 一个 class
- Class 方法
- Class 属性
- 一个 Main 方法
- 语句(Statements)& 表达式(Expressions)
- 注释
"Hello World" 的简单的代码:
实例
using System;
namespace HelloWorldApplication
{
class HelloWorld
{
static void Main(string[] args)
{
/* 我的第一个 C# 程序*/
Console.WriteLine("Hello World");
Console.ReadKey();
}
}
}
结果:Hello World
让我们看一下上面程序的各个部分:
- 程序的第一行 using System; - using 关键字用于在程序中包含 System 命名空间。 一个程序一般有多个 using 语句。
- 下一行是 namespace 声明。一个 namespace 里包含了一系列的类。HelloWorldApplication 命名空间包含了类 HelloWorld。
- 下一行是 class 声明。类 HelloWorld 包含了程序使用的数据和方法声明。类一般包含多个方法。方法定义了类的行为。在这里,HelloWorld类只有一个 Main 方法。
- 下一行定义了 Main 方法,是所有 C# 程序的 入口点。Main 方法说明当执行时 类将做什么动作。
- 下一行 /*...*/ 将会被编译器忽略,且它会在程序中添加额外的 注释。
- Main 方法通过语句 Console.WriteLine("Hello World"); 指定了它的行为。
WriteLine 是一个定义在 System 命名空间中的 Console 类的一个方法。该语句会在屏幕上显示消息 "Hello, World!"。
- 最后一行 Console.ReadKey(); 是针对 VS.NET 用户的。这使得程序会等待一个按键的动作,防止程序从 Visual Studio .NET 启动时屏幕会快速运行并关闭。
注意:
- C# 是大小写敏感的。
- 所有的语句和表达式必须以分号(;)结尾。
- 程序的执行从 Main 方法开始。
- 与 Java 不同的是,文件名可以不同于类的名称。
编译 & 执行 C# 程序
使用 Visual Studio.Net 编译和执行 C# 序,请按下面的步骤进行:
- 启动 Visual Studio。
- 在菜单栏上,选择 File -> New -> Project。
- 从模板中选择 Visual C#,然后选择 Windows。
- 选择 Console Application。
- 为您的项目制定一个名称,然后点击 OK 按钮。
- 新项目会出现在解决方案资源管理器(Solution Explorer)中。
- 在代码编辑器(Code Editor)中编写代码。
- 点击 Run 按钮或者按下 F5 键来运行程序。会出现一个命令提示符窗口(Command Prompt window),显示 Hello World。
C# 基本语法
C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。
例如,以 Rectangle(矩形)对象为例。它具有 length 和 width 属性。根据设计,它可能需要接受这些属性值、计算面积和显示细节。
Rectangle(矩形)类的实现,并借此讨论 C# 的基本语法:
实例
using System; namespace RectangleApplication{ class Rectangle { // 成员变量 double length;//声明一个double类型的变量length double width;//声明一个double类型的变量width public void Acceptdetails() //一个用来赋值的方法 { length = 4.5; width = 3.5; } public double GetArea() //一个用来计算的方法 { return length * width; } public void Display() //一个用来打印的方法 { Console.WriteLine("Length: {0}", length); Console.WriteLine("Width: {0}", width); Console.WriteLine("Area: {0}", GetArea()); //打印GetArea方法的计算结果 } } class ExecuteRectangle { static void Main(string[] args) //程序入口方法,创建实例,调用相应的方法 { Rectangle r = new Rectangle(); r.Acceptdetails(); r.Display(); Console.ReadLine(); } } }
在这段代码中,逻辑是这样的:
- 首先进入 Main 方法,创建一个名称为 r 的实例。
- 然后调用 Acceptdetails 给 r 进行赋值。
- 最后调用 Display 方法打印结果。
- 而用于计算的 GetArea 方法在在调用 Display 时直接打印出来。
当上面的代码被编译和执行时,它会产生下列结果:
Length: 4.5
Width: 3.5
Area: 15.75
using 关键字
在任何 C# 程序中的第一条语句都是:
using System;
using 关键字用于在程序中包含命名空间。一个程序可以包含多个 using 语句。
class 关键字
class 关键字用于声明一个类。
C# 中的注释
注释是用于解释代码。编译器会忽略注释的条目。在 C# 程序中,多行注释以 /* 开始,并以字符 */ 终止,如下所示:
/* This program demonstrates
The basic syntax of C# programming
Language */
单行注释是用 '//' 符号表示。例如:
}//end class Rectangle
成员变量
变量是类的属性或数据成员,用于存储数据。在上面的程序中,Rectangle 类有两个成员变量,名为 length 和 width。
成员函数
函数是一系列执行指定任务的语句。类的成员函数是在类内声明的。我们举例的类 Rectangle 包含了三个成员函数: AcceptDetails、GetArea 和 Display。
实例化一个类
在上面的程序中,类 ExecuteRectangle 是一个包含 Main() 方法和实例化 Rectangle 类的类。
标识符
标识符是用来识别类、变量、函数或任何其它用户定义的项目。在 C# 中,
类的命名必须遵循如下基本规则:
- 标识符必须以字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。
- 标识符中的第一个字符不能是数字。
- 标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ' / \。
- 标识符不能是 C# 关键字。除非它们有一个 @ 前缀。 例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字。
- 标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
- 不能与C#的类库名称相同。
C# 关键字
关键字是 C# 编译器预定义的保留字。这些关键字不能用作标识符,但是,如果您想使用这些关键字作为标识符,可以在关键字前面加上 @ 字符作为前缀。
在 C# 中,有些关键字在代码的上下文中有特殊的意义,如 get 和 set,这些被称为上下文关键字(contextual keywords)。
下表列出了 C# 中的保留关键字(Reserved Keywords)和上下文关键字(Contextual Keywords):
补充1:
static void Main(string[] args) { Console.WriteLine("A:{0},a:{1}",,); Console.ReadLine(); }
运行结果:
A:65,a:97
当 WriteLine() 函数有多个参数时,输出第一个参数中的内容,而第二个参数中的内容替换掉第一个参数中对应位置的占位符一起输出。
如果第一个参数没有留占位符,那么第二个参数内容不输出.
Console.WriteLine("A:,a:",65,97);
运行结果:
A:,a:
占位符从零开始计数,且占位符中的数字不能大于第二个参数的个数减一(要求占位符必须有可替换的值).
占位符数字与第二个参数字符位置一一对应.
static void Main(string[] args) { Console.WriteLine("A:{1},a:{0}",,); Console.ReadLine(); }
运行结果:A:97,a:65
补充2:
C# 中什么叫类的实例化?
直白地解释就是:通过已有的类(class)创建出该类的一个对象(object)
打个比方:你设计了一个飞机模型,交给工人师傅去加工制作,生产出一个(一批)飞机。飞机模型就相当于程序中的类,生产出来的飞机就是对象,生产飞机这一过程就叫做类的实例化。
MyPlane plane1= new MyPlane(); //类的实例化
补充3:
补充一下 C# 中 // 注释和 /// 注的区别:
C# 引入了新的 XML 注释,即我们在某个函数前新起一行,输入 ///,VS.Net 会自动增加 XML 格式的注释
// 不会被编译,而 /// 会被编译
所以使用 /// 会减慢编译的速度(但不会影响执行速度)
但使用 /// 会在其它的人调用你的代码时提供智能感知(通常在Form。Designer.cs 窗口会自动生成 /// 注释的程序)举个例子:
/// <summary>
/// 必需的设计器变量。 //定义属性,注意该属性为可读可写属性
/// </summary>
要注意必须有:
/// <summary>
///
/// </summary>
补充4:
在 C# 中:
int 相当于 System.Int32
double 相当于 System.Double
string相当于 System.String
一般在程序开头添加 using System;,这时 string 相当于 System.String 。
C#程序结构与基本语法的更多相关文章
- Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
- 【第三篇】SAP ABAP7.5x新语法之程序结构&SubScreen
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文地址:SAP ABAP7.5x系列之程序结构& ...
- C++程序结构---1
C++ 基础教程Beta 版 原作:Juan Soulié 翻译:Jing Xu (aqua) 英文原版 本教程根据Juan Soulie的英文版C++教程翻译并改编. 本版为最新校对版,尚未定稿.如 ...
- Verilog HDL的程序结构及其描述
这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog ...
- GO语言的进阶之路-go的程序结构以及包简介
GO语言的进阶之路-go的程序结构以及包简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编辑,编译和运行 A,编辑 Go程序使用UTF-8编码的纯Unicode文本编写.大 ...
- 【基于Android的ARM汇编语言系列】之三:ARM汇编语言程序结构
作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...
- golang笔记2_程序结构
golang程序结构 2.1 命名 Golang中的命名遵循这样一个简单原则,名字的开头必须是字母或者下划线,后面跟字母.数字或者下划线(这里与C语言中是一致的). 在函数内部声明的实体,即局部变量, ...
- Go语言基础之1--标识符、关键字、变量和常量、数据类型、Go的基本程序结构、Golang的特性
一.前言 当我们项目较为简单时,我们在src目录下新建一个该项目目录,里面存放源码文件即可,见下图: 当我们一个项目较为复杂时,我们可以在src目录下新建一个该项目目录,在针对该项目不同模块创建不同目 ...
- day03运算符、表达式、自增自减、三目运算符、程序结构、用户输入
复习 1.java的输出语句 1)System.out.println(); 2)System.out.print(); 2.注释 1)单行注释 // 2)多行注释 /* .... */ 3.变量 1 ...
随机推荐
- Linux变量内容的删除、代替与替换
变量内容的删除与代替 范例一:先让小写的 path 自己定义变量配置的与 PATH 内容同样 [root@www ~]# path=${PATH} [root@www ~]# echo $path / ...
- PHP中include路径修改
1.__FILE__ __FILE__ always equals to the real path of a php script regardless whether it's included. ...
- linux输入子系统(5) - 学习框架
注:本系列转自: http://www.ourunix.org/post/290.html input子系统学习系列文章,是我在实际开发过程中遇到也是必须啃下去的第一个Linux驱动,所以有必要记载下 ...
- 【网络协议】IP协议、ARP协议、RARP协议
IP数据报 IP是TCP/IP协议族中最核心的协议,全部的TCP.UDP.ICMP.IGMP数据都以IP数据报的格式传输.IP仅提供尽力而为的传输服务.假设发生某种错误.IP会丢失该数据.然后发送IC ...
- thinkphp getField( )和field( )
thinkphp getField( )和field( ) 做数据库查询的时候,比较经常用到这两个,总是查手册,记不住,现在把它总结下,希望以后用的时候不查手册了. 不管是用select 查询数据 ...
- C系列语言终极校对宝典【第一、第二部分】
第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一 ...
- firefox 45 版本
在做项目的时候,发现45版本的firefox浏览器.声明函数要放在调用者的上方.而firefox的47,48版本则没有这种情况发生.
- 20170221 SE03 打包请求
请求处理:SE03 只会有其中两三个功能,还需要学习. 请求打包,是传输请求时候常用的一种方法. 步骤如下: 注意点:1.打包请求一定仔细检查,不要遗漏 如果请求不多,分开传是更好 ...
- Visio 2010 绘制流程图布局技巧
设置多个元件大小一致:https://zhidao.baidu.com/question/176608306.html 设置多个元件的对齐方式,水平等距.垂直等距等:http://jingyan.ba ...
- 自己写的canvas 手写画板
<!DOCTYPE html> <html> <head> <title>canvas</title> <meta charset=& ...