陆续更新

  • 前言
  • 一、C#编程基础
    • 1.理解格式字符串
    • 2.b=a++; 先将a的值赋给b,运算完成后,变量a自加一
    • 3.TryParse方法或System.Convert方法
    • 4.在转换类型时异常处理:将容易出错的代码封装到try块中、捕获所有异常、捕获特定异常
    • 5.C#输出乘法表
    • 6.数据类型转换
    • 7.try-catch异常捕获
    • 8.switch-case
    • 9.请用户输入年份,在输入月份,输出该月的天数(年份分平年和闰年)
    • 10.将字符串转换为某种数据类型
    • 11.将枚举类型强转为int类型 枚举类型和int类型相互兼容
    • 12.将int类型强转为枚举类型
    • 13.所有的数据类型都能够转换成string类型 .ToString
    • 14.将String类型转换为枚举类型
  • 二、C#方法基础
    • 1.什么是方法
    • 2.return
    • 3.continue
    • 4.out参数
    • 5.ref参数
    • 6.params参数
    • 7.方法的重载
    • 8.方法的递归
    • 9.将数字保留几位小数
  • 总结

前言

成功往往不是一蹴而就


一、C#编程基础

//using static System.Console 以简化代码
//Main方法中
int numberOfApples = 12;
decimal pricePerApple = 0.35M //C#中声明变量为十进制10使用decimal,并且在数字后加字母M
Console.WriteLine(format:"{0} apples costs {1:C}", //使用编号的未知参数可以使得字符串中相应位置输出当前值arg0: numberOfApples,arg1: pricePerApple * numberOfApples);
Console.WriteLine($"{numberOfApples} apples costs {pricePerApple * numberOfApples:C}"); //使用$为前缀的字符串可以在变量或表达式名称两边使用花括号,从而输出变量或表达式在字符串相应位置的当前值
//1.使用@作为前缀的字符串,可以把字符串中的“格式字符串”定义为字符串进行输出
//即取消\在字符串中的转义作用,使其单纯的表示为一个‘\’符号
//2.使字符串按照编辑的原格式输出

OUT:12 apples costs _4.20

1.理解格式字符串

**可以在逗号或冒号后使用格式字符串对变量或表达式进行格式化**

PS.
N0格式的字符串:表示有千位分隔符且没有小数点的数字;
C格式:表示货币
X格式:十六进制计数法对值进行格式化
D格式:使用长日期格式的日期部分

//格式项的完整语法
{index [, alignment] [: formatString]}
{a,-5} //5个字符长度,且-5<0左对齐,反之,右对齐
//循环遍历参数值
foreach (string arg in args)
{WriteLine(arg);
}

2.b=a++; 先将a的值赋给b,运算完成后,变量a自加一

b = ++a; 先a自加一,然后带着加一后的值去参与运算

3.TryParse方法或System.Convert方法

//使用TryParse方法转换输入字符串,避免异常
Write("How many eggs are there?");
int count;
string input = Console.ReadLine(); //用户输入字符串然后回车if (int.TryParse(input, out count)) //转换输入字符串
//byte.TryParse将数字字符串转换为与之等效的byte,并返回一个指示转换是否成功得知,True/False
{WriteLine($"There are {count} eggs.");
}
else
{WriteLine("I could not parse the input.");
}

4.在转换类型时异常处理:将容易出错的代码封装到try块中、捕获所有异常、捕获特定异常

//使用TryParse方法转换输入字符串,避免异常
Write("How many eggs are there?");
string input = Console.ReadLine(); //用户输入字符串然后回车
try
{int count = int.Parse(input);  //转换输入字符串WriteLine($"There are {count} eggs.");
}
catch (FormatException)  //捕获特定异常
{WriteLine("The input you entered is not a valid number format.");
}
catch (Exception ex) //先捕获所有异常,然后确定发生了那种类型的异常后,在前面加入捕获特定异常catch语句
{WriteLine($"{ex.GetType()} says {ex.Message}");
}

5.C#输出乘法表

using static System.Console;namespace WrittingFunctions
{class Program{static void TimesTable(byte number){WriteLine($"This is the {number} times table:");for (int row = 1; row <=12; row++){WriteLine($"{row} X {number} = {row * number}");}WriteLine();}static void RunTimesTable(){bool isNumber;do{Write("Enter a number between 0 and 255:");isNumber = byte.TryParse(ReadLine(), out byte number); //byte.TryParse将数字字符串转换为与之等效的byte,并返回一个指示转换是否成功得知,True/Falseif (isNumber){TimesTable(number);}else{WriteLine("You did not enter a valid number!");}}while (isNumber);}static void Main(string[] args){RunTimesTable();}}
}

注意do-while会一直循环,可以修改

6.数据类型转换

double dd = 3.1415;
int number = (int)dd; //强制显示类型转换
//int-->double 自动隐式类型转换//double-->int 大转小,强制显示类型转换,需要在小的数据前加(double)(double为大的数据类型)
//整数*1.0可以将一个整数提升为double类型
Console.WriteLine("n1={0:0.000}", a); // :0.00为保留两位小数,小数点后有几个零就代表保留几位小数

7.try-catch异常捕获

        异常捕获与作用域概念使用异常捕获之前,要正常书写代码,在程序运行之后,把可能出现的代码行加入到try - catch中语法上没有错误,在程序运行的过程中,由于某些原因出现了错误,程序不能正常的运行哪行代码有可能报错,你就踹他一脚,经常性用try - catch来进行异常捕获语法try{可能会出现异常的代码;}catch{出现异常后要执行的代码;}作用域变量的作用域就是指你能够使用到这个变量的范围变量的作用域一般从声明它的那个括号开始到那个括号所对应的结束的括号结束在这个范围内,我们可以访问并使用变量,超出这个范围就无法访问该变量
//异常捕获与作用域概念//使用异常捕获之前,要正常书写代码,在程序运行之后,把可能出现的代码行加入到try - catch中//语法上没有错误,在程序运行的过程中,由于某些原因出现了错误,程序不能正常的运行//哪行代码有可能报错,你就踹他一脚,经常性用try - catch来进行异常捕获//语法//try//{//    可能会出现异常的代码;//}//catch//{//    出现异常后要执行的代码;//}//作用域//变量的作用域就是指你能够使用到这个变量的范围//变量的作用域一般从声明它的那个括号开始到那个括号所对应的结束的括号结束//在这个范围内,我们可以访问并使用变量,超出这个范围就无法访问该变量//number变量报错,因为变量的作用域
bool b = true;
int number = 0;//声明一个变量
Console.WriteLine("请输入一个数字:(按回车键结束)");
try
{//赋值number = Convert.ToInt32(Console.ReadLine());//如果这行代码出现异常,立即退出try语句,进入catch语句
//某行代码出现异常后,try里面剩下的语句都不会执行了
}
catch
{Console.WriteLine("您输入的数据不规范!");b = false;
}
//让代码满足某些条件去执行的话,使用bool类型
if (b)
{//使用//我们要执行下面这行代码,需要满足某些条件Console.WriteLine(number * 2);
}

8.switch-case

//多条件定值bool b = true;int salary = 5000;Console.WriteLine("请输入工资的等级评定:");string level = Console.ReadLine();switch(level) //注意case后面的变量类型要和switch括号里面的变量类型一致{case "A":salary += 500; //如果两个case中的代码完全相同,可以删除第一个case冒号后面的代码,简化代码break;case "B":salary += 200;break;case "C":break;case "D":salary -= 200;break;case "E":salary -= 500;break;default:Console.WriteLine("输入有误,程序退出");b = false;break;}if(b){Console.WriteLine("您的工资为{0}", salary);}

9.请用户输入年份,在输入月份,输出该月的天数(年份分平年和闰年)

//定义三个变量,用来存储年份,月份。天数int year = 0;int month = 0;int day = 0;Console.WriteLine("请输入所要查询的年份:");//使用try-catch进行异常捕获try{year = Convert.ToInt32(Console.ReadLine()); //对输入进行数据类型转换Console.WriteLine("请输入所要查询的月份:");//使用try-catch进行异常捕获try{month = Convert.ToInt32(Console.ReadLine());if (month >= 1 && month <= 12){switch (month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:day = 31;break;case 2:if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){day = 29;}else{day = 28;}break;default:day = 30;break;}Console.WriteLine($"{year}年的{month}月有{day}天");}else{Console.WriteLine("您输入的月份超出范围,程序退出!");}//if-else的括号}catch (FormatException){Console.WriteLine("The input you entered is not a valid number format.");}catch (Exception ex) //先捕获所有异常,然后确定发生了哪种异常后,在前面加入捕获特定异常的catch语句捕获该特定异常{Console.WriteLine($"{ex.GetType()} says {ex.Message}");}}catch(FormatException) //捕获该特定异常System.某某 捕获特定异常的括号里面就要填入该某某{Console.WriteLine("The input you entered is not a valid number format.");}catch(Exception ex) //先捕获所有异常,然后观察输出确定发生了哪种异常后,在前面加入捕获特定异常的catch语句捕获该特定异常{Console.WriteLine($"{ex.GetType()} says {ex.Message}");}

10.将字符串转换为某种数据类型

1.进行数据转换的时候,面上过得去就转换成功,转换不成则程序抛异常
int i = Convert.ToInt32("123");
2.用法和Convert一样,效率更高一些,有int.Parse()/double.Parse()/char.Parse()
int j = int.Parse("123");
//注意使用TryParse方法,当数据转换成功时,返回bool值为True,然后out转换后相应数据类型的值;若无法进行数据转换,则为False,out变量值为0//int number = 0;TryParse方法中需要有   参数 返回值//bool b = int.TryParse("123asd", out number);

11.将枚举类型强转为int类型 枚举类型和int类型相互兼容

QQState state = QQState.Online;
int n = (int)state; //数据类型强制转换
Console.WriteLine(n);  //输出对应的枚举量对应的标签 递增1     //默认第一个枚举量对应的数字标签为0,可以人为对其进行修改
Console.WriteLine((int)QQState.Offline);

12.将int类型强转为枚举类型

int n1 = 3;
QQState s = (QQState)n1;  //如果int值超出对应的枚举数目,则返回原来的int值
Console.WriteLine(s);

13.所有的数据类型都能够转换成string类型 .ToString


//所有的类型都能够转换成string类型   .ToString
int n1 = 10;
Console.WriteLine(n1.ToString());
QQState state = QQState.Online;
Console.WriteLine(state.ToString());  //将枚举类型转换为String类型

14.将String类型转换为枚举类型

//要转换的类型 变量名 = (要转换的类型)Enum.Parse(typeof(要转换的类型), "要转换的字符串");
//如果转换的字符串是数字,就算枚举中没有对应的,也不会抛异常
//如果转换的字符串是除数字之外的字符串,如果枚举中没有,则程序会抛异常//将n1转换成枚举类型//Convert.ToInt32()  int.Parse() int.TryParse()//调用Parse()方法就是为了让它帮助我们将一个字符串转换成对应的枚举类型
string n1 = "3";
QQState state = (QQState)Enum.Parse(typeof(QQState), n1);
Console.WriteLine(state);

二、C#方法基础

1.什么是方法

**每构造一个新的方法的时候,需要对其进行解释备注 ///

            //方法     (需要和Main方法并列)//函数就是将一堆代码进行重用的机制//函数的语法://[public] static 返回值类型 方法名([参数列表])//{//    方法体;//}//返回值类型,如果不需要写返回值,则写void//方法名:Pascal  每个单词的首字母都要大写,其余字母小写//参数列表:完成这个方法所必须要提供给这个方法的条件。如果不需要有参数,则小括号也不能省略。//方法写好后,如果想要被执行,必须要在Main()函数中调用//方法的调用语法//类名.方法名([参数]);//***在某些情况下,类名是可以省略的,如果你写的方法和Main()方法在同一个类中,这个时候,类名就可以被省略

在某些情况下,类名是可以省略的,如果你写的方法和Main()方法在同一个类中,这个时候,类名就可以被省略

//计算两个整数之间的最大值
//调用该类下的某个方法
int max = Program.GetMax(1, 8);  //把鼠标放在该方法上面,如果出现的提示处的返回值类型不为void,则需要声明一个相应的数据类型变量接收调用该方法后的返回值,如果返回值类型为void,则说明该方法没有返回值,直接 类名.方法名 进行调用

2.return

1.在方法中返回需要返回的数据
2.立即结束本次方法,即从该return语句直接跳到该方法的最后一个花括号处

3.continue

结束本次循环,判断循环条件,继续下一次循环

4.out参数

out参数侧重于在一个方法中返回多个不同类型的值

1.如果在一个方法中,需要返回多个相同数据类型的值,可以考虑返回一个数组
2.但是,如果返回多个不同类型的值的时候,就不能返回一个数组
3.可以考虑使用out参数
4.out参数侧重于在一个方法中返回多个不同类型的值(注意:out参数需要在方法内部对变量进行赋值,因为其需要在方法内直接调用变量值,并多余返回该变量的值)

当方法的参数列表为数组的时候,对数组改变可以不需要返回值也能传递到方法外,不需要返回值、out、ref参数

5.ref参数

能够将变量带入方法中进行改变,改变完成后,再将改变后的值带出方法

1.能够将变量带入方法中进行改变,改变完成后,再将改变后的值带出方法
2.ref参数要求在方法外必须为其赋值,而方法内可以不赋值(其原因是ref参数需要将方法外的值带入方法进行计算并带出,所以在方法外需要对其进行赋值)

6.params参数

能够将变量带入方法中进行改变,改变完成后,再将改变后的值带出方法

1.能够将变量带入方法中进行改变,改变完成后,再将改变后的值带出方法
2.ref参数要求在方法外必须为其赋值,而方法内可以不赋值(其原因是ref参数需要将方法外的值带入方法进行计算并带出,所以在方法外需要对其进行赋值)

7.方法的重载

方法的重载就是指方法的名称相同,但是参数不同

参数不同分为两种情况:
1.如果参数的个数相同,那么参数的类型就不能相同
2.如果参数的类型相同,那么参数的个数就不能相同

方法的重载跟返回值类型以及是否有返回值没有关系。

8.方法的递归

方法自己调用自己

1.注意需要设定条件(静态字段模拟全局变量)终止递归,不能死循环
例-找出一个文件夹中的所有文件,这个文件夹中还可能包括其它文件夹,这就要使用到方法的递归

9.将数字保留几位小数

三位小数0.000

double number = 3.1415926;
string s = number.ToString("0.00"); //将字符串保留两位小数,从而使得原数字保留两位小数
number = double.Parse(s);
Console.WriteLine(number);

总结

提示:这里对文章进行总结:
例如:

C#学习笔记之从入门到精通相关推荐

  1. Radare2 学习笔记:从入门到精通 1. Radare2 简介,及安装

    目录 Radare2 是什么? Radare2 介绍 如何安装 Radare2? 在 Linux 中安装 Radare2 和 Cutter 在Mac OSX 中安装 R2 和Cutter 在 Micr ...

  2. mysql 8.0.26学习笔记超详细入门到精通

    目录 1.基本的SELECT语句 1.1 查询表中特定字段 1.2 字段取别名 1.3 数据去重 1.4 数据空值替换 1.5 显示表的结构 1.6 条件查询where 2.算术运算符 3.比较运算符 ...

  3. docker学习笔记2,入门到精通

     docker容器连接 通过docker部署nginx服务 -p 把容器端口随机在物理机随机映射一个端口 目前docker pull centos是centos8的版本 root@DESKTOP-TC ...

  4. Hadoop学习笔记(1) ——菜鸟入门

     Hadoop学习笔记(1) --菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户能够在不了解分布式底层细节的情况下.开发分布式 ...

  5. iOS学习笔记-地图MapKit入门

    代码地址如下: http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错 ...

  6. 【学习笔记】密码学入门(2) 单向散列函数,消息认证码,数字签名,证书

    [学习笔记]密码学入门(2) 单向散列函数,消息认证码,数字签名,证书 学习笔记 2 – 混合密码系统 在密码学入门(1)中提到了基本的密码形式,对称密码和公钥密码以及混合密码系统. 这一部分将学习到 ...

  7. 逐梦旅程学习笔记 DirectX开发入门02:旋转的彩色立方体

    本文是 系列笔记DirectX部分的第2篇,上一篇参见 逐梦旅程学习笔记 DirectX开发入门01:应用程序基本框架 这个示例增加了一些实际的内容,首先是绘制一个颜色随机变幻的彩色立方体,其二是显示 ...

  8. 2023最全软件测试学习路线图(从入门到精通)

    六维全息课程注重综合能力培养,从入学到职后一站式服务测试开发人才.2023年最新软件测试学习路线图,从入门到精通一应俱全. 9阶段专业课+11大专项测试项目 适应互联网企业测试开发需求. 对于想入行学 ...

  9. oracle 删除awr报告,学习笔记:Oracle awr入门 深入了解AWR报告

    天萃荷净 深入了解AWR报告,ASH与AWR报告的官方说明,数据库进程和性能视图获取 1.AWR与ASH概念 1.ASH 若是一个普通的会话(我是指没有大量地耗费资源),则对于性能调整来说无足轻重.但 ...

最新文章

  1. 2013上半年-学习目录
  2. 查看ocx控件方法_Appium自动化测试入门教程No.8——定位控件
  3. UOJ284 快乐游戏鸡(树上动态规划问题、长链剖分+单调栈)
  4. 滴滴出行的数据架构和信息流处理思路解析
  5. java高级类型_Java第四章高级类属性一
  6. psim扰动观察法编程c语言,基于PSIM的新型扰动观察法的MPPT仿真研究
  7. 接口测试简介以及接口测试用例设计思路
  8. LOST1-Linux远程控制工具
  9. 在html中加入中文字体,html中中文字体的代码
  10. 3500 vocabulary
  11. 墨子科技成果是计算机,近年来取得了哪些科技成就_现代史_我爱历史网
  12. C Primer Plus 第十四章学习总结……2015.5.17
  13. 解决表格刷新时抖动闪烁问题
  14. 2019东南大学计算机考研录取,东南大学2019年硕士研究生拟录取名单公示-不带成绩...
  15. 迷室3第三章难点问题解读
  16. C++20 Concepts 模版约束概念
  17. Java pta练习题 第一章
  18. 登陆id显示无法连接服务器失败,无法连接id服务器失败怎么办
  19. 字符串匹配之BM算法
  20. nslookup type值_nslookup命令详解

热门文章

  1. 录简写与缩略语 问题解决工具及要点
  2. beego框架-logs模块学习笔记
  3. 04、【电脑维修】Win 10重新安装微软商店以及便筏打不开问题
  4. STM32 SPI读写FLASH
  5. hping3的编译和安装
  6. android 后台运行service实现和后台的持续交互
  7. 【KALI使用】12搜索引擎Google、YANDEX、Maltego
  8. gzh模板消息内外网穿透问题
  9. Docker探赜索隐
  10. 学习编程从坚定路线开始