前言:学习笔记,本文在逐步完善中。
文章目录
一,第一个C#程序
下载vs2019或VS2017,虽然需要密钥,但是你可以百度啊
启动VS2019,点击“ 创建新项目(N) ”,步骤如图所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//前五行是自动生成的代码,引用默认的命名空间
namespace ConsoleApp1 //自动生成的命名空间,该命名空间的名称默认与创建的项目名称相同,
//开发人员可手动修改
{
class Program //自动生成的Program类,该类是C#程序的启动类,可以手动修改
{
static void Main(string[] args) // 自动生成的Main方法,用来作为程序的主入口方法
//每个C#程序都必须有一个Main()方法
{
Console.WriteLine("Hello World"); //Console.WriteLine方法主要向控制台输出文本
Console.ReadLine(); //Console.ReadLine方法主要用来获取控制台的输出内容
//这里用来将控制台窗体定位在桌面上,
//可以试试注释掉这一行,运行一下看看效果,你会看到控制台一闪而过
}
}
}
二,C#程序结构预览
(1) 命名空间
C#程序的命名空间就像是一个包含不同类型物品的仓库,而using指令就好比一把钥匙,命名空间的名称就好比是仓库的名称,用户可以通过钥匙打开指定名称的仓库,进而从仓库中获取所需要的物品。
如果要调用某个命名空间中的类或方法,首先需要使用using指令引入命名空间,这样,就可以直接使用该命名空间中所包含的成员(包括类及类中的属性,方法等)。
在使用Visual Studio创建项目时,会自动生成一个与项目名称相同的命名空间。例如在创建项目时使用默认项目名:ConsoleApp1时,会自动生成一个名称为“ConsoleApp1”的命名空间。
//自动生成的命名空间,该命名空间的名称默认与创建的项目名称相同,开发人员可手动修改
namespace ConsoleApp1
{
}
在C#程序中定义命名空间,需要使用关键字namespace:
namespace 命名空间名
{
}
(2) 类
C#程序的主要功能代码都是在类中实现的。类是一种数据结构,可以封装数据成员,方法成员和其他类。因此,类是C#的核心和基本构成模块。C#支持自定义类,使用C#就是编写自己的类来描述实际需要解决的问题。
(3) 关键字与标识符
a. 关键字
关键字是C#中已经被赋予特定意义的一些单词,在开发程序时,不可以把这些关键字作为命名空间,类,方法或属性等来使用。
b. 标识符
标识符可以简单的理解为人的名字,比如,每个人都有自己的名字。它主要用来表示类名,变量名,方法名,属性名,数组名等各种成员。
(4) Main方法
每个C#程序都必须包含一个Main方法,它是类体中的主方法,也称为主入口方法,是激活整个程序的开关。
在Visual Studio中创建控制台应用程序后,会自动生成一个Program.cs文件,该文件有个默认的Main方法:
class Program
{
static void Main(string[] args)
{
}
}
Main方法从“ { ”开始,到“ } ”结束。
static 和 void分别是Main方法的静态修饰符和返回值修饰符,C#程序中的Main方法必须声明为static,并且区分大小写。如果删去了static,则:
Main方法一般都是在创建项目时自动生成的,不用开发人员手动编写或修改。
如果需要修改,则需要注意:
- Main方法在类或结构内声明,它必须是静态的,而且不应该是公用的。
- Main方法的返回类型有两种:void或int。
- Main方法可以包含命令行参数string[] args,也可以不包括。
static void Main(string[] args){}
static void Main(){}
static int Main(string[] args){}
static int Main(){}
(5) C#语句
C#语句是构造所有C#程序的基本单位。C#语句以分号结束。
例如:在输出“Hello World”的程序中输出“Hello World”字符串和定位控制台的代码就是C#语句
Console.WriteLine("Hello World");
Console.ReadLine();
上面的代码是两条最基本的C#语句,用来在控制台中输出内容和读取内容,它们都用到了Console类。
Console 类表示控制台应用程序的标准输入流、标准输出流和错误流,该类中包含很多方法,与输入、输出相关的主要有4个方法:
-
Read 从标准输入流读取下一个字符
-
RcadLine 从标准输入流读取下一行字符
-
Write 将指定的值写入标准输出流
-
WriteLine 将当前行终止符写入标准输出流
(6) 注释
a. 行注释
在C#代码中,行注释以“//”开头,其后均为注释的内容,直至回车。
static void Main(string[] args) //Main()方法,程序的主入口方法
{
Console.WriteLine("Hello World"); //输出“Hello World”
Console.ReadLine();//定位控制台窗口
}
b. 块注释
static void Main(string[] args) //Main()方法,程序的主入口方法
{
/* 块注释开始
Console.WriteLine("Hello World"); //输出“Hello World”
Console.ReadLine();//定位控制台窗口
*/
}
不过块注释通常用来为类文件,类或方法等添加版权,功能等信息,注释文本或代码还是使用“//”较好
static void Main(string[] args) //Main()方法,程序的主入口方法
{
// Console.WriteLine("Hello World"); //输出“Hello World”
// Console.ReadLine();//定位控制台窗口
}
三,程序编写规范
代码规范虽然不是C#语法的组成部分,但是“编程路千万,标准第一条,代码不规范,同事两行泪”
(1) 代码编写规则
- 在编写C#程序时,统一代码的缩进样式,比如统一缩进为两个空格或四个空格,一般为一个Tab键。
- 每写完一行C#代码,都应该换行编写下一行C#代码。
- 在编写C#代码时,合理使用空格,以便使结构更清晰,比如在运算符+的前后各一个空格。
- 尽量使用接口,然后使用类实现接口,以提高程序的灵活性
- 关键的语句(包括声明关键的变量)必须要写注释,由于你不写注释,你的同事正在提刀赶来的路上。
- 建议局部变量在最接近使用它的地方声明。
- 尽量不要使用goto系列的语句,除非是在跳出深层循环时。
- 避免编写超过五个参数的方法,如果要传递多个参数,应使用结构。
- 避免编写代码量过大的try-catch语句块。
- 避免在同一个文件中编写多个类。
- 在生成和构建一个长的字符串时,一定要使用StringBuilder类型,而不要使用string类型
- 对于if语句,应该使用一对“{ }”把语句包含起来。
- 对于switch语句,一定要有default语句来处理意外情况。
(2) 命名规范
a. 两种命名方法
Pascal命名法:名称中第一个字母为大写,后面连接词的第一个字母也均为大写。此方法用于命名方法名和类型名,而且方法的命名一般将其命名为动宾短语,表明该方法的主要作用, 类的命名最好能体现出类的功能或操作
演示:创建一个公众类,并在此类中定义一个公共方法
public class Uesr //创建一个公共类,一看就是一个与用户相关的类
{
public void GetInfo() //在公共类中创建一个公共方法,GetInfo是个动宾短语,
//get info 获得资讯,获取信息
{
}
}
Camel命名法(又称驼峰式命名法):名称中第一个单词的字母为小写,后面连接词的第一个字母均为大写。此方法用于命名局部变量和方法的参数。补充: 定义成员变量时,最好加前缀“_”,然后就是驼峰命名法了。
演示:声明一个字符串变量和创建一个公共方法
string strUserName; //声明一个字符串变量strUserName
public void addUser(string strUserId, byte[] byPassword)
//创建一个具有两个参数的公共方法
{
}
b.常用程序元素的基本命名规范
- 在命名项目名称时,可以使用公司域名+产品名称,或直接使用产品名称
演示:搜狗目前在用的域名是sogou,假设其有个待研产品名为CHR,则可以将项目命名为“sogou.CHR”或“CHR”
- 用有意义的名字定义命名空间,如公司名,产品名
namespace sogou //公司命名
{
}
namespace CHR //产品命名
{
}
- 接口的名称加前缀“I”,字母“ i ”的大写
public interface Iconvertible //创建一个公共接口Iconvertible
{
}
- 类的命名最好能体现出类的功能或操作
- 方法的命名一般将其命名为动宾短语,表明该方法的主要作用
public class Uesr //创建一个公共类,一看就是一个与用户相关的类
{
public void GetInfo() //在公共类中创建一个公共方法,GetInfo是个动宾短语,
//get info 获得资讯,获取信息
{
}
}
- 定义成员变量时,最好加前缀“_”
public class User //创建一个公共类
{
private string _strUserName; //声明一个私有成员变量
}