C#入门到精通读书笔记

发布时间 2023-10-29 23:51:37作者: 实名吓我一跳

一、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.理解格式字符串
**可以在逗号或冒号后使用格式字符串对变量或表达式进行格式化**
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/False
if (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);
}