C#基础笔记
文章目录
C#概念
.net:一般指.net framework框架,一种平台,一种技术
C#:一种编程语言,可以开发基于.net平台的应用(其它语言也可以开发基于.net 平台的应用,如VB)
java:既是编程语言又是一种平台
.NET都能干什么
桌面应用程序(Winform应用程序)
(.net开发的桌面应用程序叫Winform应用程序)
Internet应用程序ASP.NET
(.net开发的internet应用程序叫ASPNET应用程序)
比如:msdn,csdn,携程,招商银行,证券之里,当当网,京东、汽车之家等
Unity3D游戏开发或者虚拟现实VR
.NET两种交互模式
- C/S:客户机(Client)/服务器模式(Server)
如:qq(C/S是Client/Server的缩写。客户端需要安装专用的客户端软件。) - B/S:浏览器(Browser)/服务器模式(Server)
(B/S是Brower/Server的编写,客户机上只要安装一个浏览器)
.NET解决方案结构
解决方案 :公司
项目:部门
类:员工
.cs文件结尾:类文件
Program中各个模块组成
// 引用命名空间
using System;
using System.Collections.Generic;
using System.Linq;
// 项目名 or 命名空间
namespace Application
{
// 类
static class Program
{
// 方法 or 函数
// Main函数是程序的主入口,被执行代码需要写在Main函数中
static void Main()
{
System.Threading= new System.Globalization.CultureInfo("zh-Hans");
}
}
}
解决方案文件夹组成
- .sln:解决方案文件,里面包含整个解决方案信息,点击可以执行整个项目解决方案。
- .suo:隐藏文件,包含项目中一些配置。
- 若干个项目文件夹
项目文件夹组成
- .csproj:(C sharp project)项目文件,包含项目信息,可以点击运行
- App.config:配置文件
Main函数输出hello world
static void Main()
{
Console.WriteLine("hello world");
Console.ReadKey(); // 读取输入
}
生成解决方案
点击“生成”,选择“生成解决方案”,可以发现当前代码问题。
注释
// 单行注释
/*
多行注释
*/
/// <summary>
///
/// </summary>
VS常用快捷键
Ctrl+k+D:快速对齐代码
Ctrl+J:快速弹出智能提示
Shift+End,Shift+Home
Ctrl+K+C:注释所选代码
Ctrl+K+U:取消对所选代码的注释
F1:转到帮助文档
折叠冗余代码:#Region和 #EndRegion
C#数据类型
// 整型
int number = 3;
// 小数类型
float number = 3.14;
double number = 3.14;
// 金钱类型,后缀为m或M
decimal myMoney = 300.5m;
// 字符串类型
string name = "张三"; // c#独有
String name = "张三"; // 所有语言通用类
// 字符类型
char c = 'c';
VS代码波浪线
- 红色波浪线:出错
- 绿色波浪线:可能出错
编程命名规范
- Camel 骆驼命名规范(变量):变量名首单词的首字母要小写,其余每个单词首字母要大写。如:highSchoolStudent
- Pascal命名规范(方法 or 类名):要求每个单词的首字母大写,其余字母小写。用于给类或者方法命名
字符串拼接
// +号拼接
string name = "张三";
string newName = "李四"+name;
// 占位符
string name = "张三";
string newName = "李四"+name;
Console.WriteLine("第一个名字是{0},第二个名字是{1}",name,newName);
// 如果多填了没有效果,但是不会报错
关于程序异常
异常并不是语法错误,只是在程序运行期间,由于某些原因出现了问题,使程序不能再运行。
交换两个变量
int n1 = 10;
int n2 = 20;
n1 = n1 - n2;
n2 = n1 + n2;
n1 = n2 - n1;
接收用户输入
string name = Console.ReadLine();
转义符
// 删除前面一个字符
\b
// 换行,只在winform和控制台中有用,windows系统中无用
\n
// 换行,window操作系统用
\r\n
// @符号;
// 作用1:取消\的转义效果
例如:
string filePath =@"c:\Docs\Source\a.txt";
等价于
string filePath ="c:\\Docs\\Source\\a.txt"
// 作用2:按照原格式输出
例如:
Console.WriteLine(@"第一个名字是{0},
第二个名字是{1}",name,newName);
将会正常输出原格式,包含换行空格等
算术运算符与表达式
自动类型转换:int —> double(大—>小)
显式类型转换:double —> int(小—>大)
输出指定位数
double d = 3.14;
Console.WriteLine("数字是{0:0.0000},d);
数据类型转换
// 将字符串转换为double或int类型,不兼容类型使用Convert
string str = "123";
int num = Convert.ToInt32(str); // 本质是调用Int.parse
等价于
int num = int.Parse(str); // 效率更高
// 将Int转换为Double类型
double num = num * 1.0;
double num = double.Parse(num); // 转换失败抛异常
// Int.TryParse()方法:尝试将string转为int
int number = 0;
number = int.TryParse(str,out number); // 转换效率最高
// 尝试将str转换为数字,转换失败不会抛出异常。
异常捕获
try
{
do sometings;
}catch(Exception ex)
{
do sometings;
}
程序调试方法
- F11逐句调试
-
语句标黄为待执行语句(目前还未执行)
-
添加监视变量:选择“调试”->“窗口”->“监视”
-
变量和表达式的值均可被监视
-
红色的值表示刚被修改过
-
F10逐过程调试
-
断点调试
可疑代码行前添加红色断点
continue与质数
continue:跳出本次循环,进入下一个循环。
while(循环判断){
...;
...;
continue;(直接进入第一行循环判断)
...;
...;
}
常量
声明常量的方法
const int number = 30;
// 加const后,变量不可再重新赋值
枚举
public enum 枚举名
{
值1,
值2,
值3,
......
}
enum:关键字,声明枚举的关键字
枚举名:需要符合Pascal规范,首字符大写
Tips:将枚举声明到命名空间的下面,类的外面,表示该命名空间下所有的类都可使用该枚举。枚举是自定义一种变量类型。
namespace{
public enum Gender{
男,
女,
}
class Program{
static void Main(string[] args){
Gender gender = Gender.男;
}
}
}
枚举类型与int类型可以互相转换
// 枚举转int类型
public enum Gender{
男,
女,
}
Gender gender = Gender.男;
int num = (int)gender; // 转为int后,值为枚举类型值的下标0
// int转枚举类型
int index = 1;
Gender gen = (Gender)index;
// 根据index值找到枚举中对应下标的值,找不到不抛异常,直接输出数字
所有类型都可ToString转为string类型
// 枚举转string类型
Gender gender = Gender.男;
string str = gender.ToString();
// 将string转枚举类型
// string为数字,则为枚举中对应下标的值
// string为字符,需要enum中必须要有该类型
string str = "1";
Gender newGender = (Gender)Enum.Parse(typeof(Gender), str);
Console.WriteLine(newGender);
// 当枚举中没有对应的字符串时,抛出异常
结构
public struct StructName{
public string _name;
public int _age;
public char _gender;
}
// 字段前面加上_ ,表示不是变量,是字段
数组
// 推荐声明方式
int[] nums = new int[10];
int[] nums = {1,2,3,4,5,6};
// 其它声明方式
int[] nums = new int[3]{1,2,3};
int[] nums = new int[]{1,2,3};
方法
[public] static 返回值类型 方法名([参数列表])
{
方法名:
}
如果你写的方法跟Main()函数同在一个类中,类名是可以省略的。
public:访问修饰符,公开的,哪都可以访问.
static:静态的
返回值类型:如果不需要写返回值,写void