C#基础3

张开发
2026/7/1 13:13:49 15 分钟阅读
C#基础3
一、局部变量变量通俗理解为可以变化的量是用来存储数据的一种数据格式 其保证了数据的多样性。下文中写的变量都为局部变量局部变量 是在方法中定义变量局部变量使用三个步骤1.定义声明变量2.初始化变量3.使用变量变量的作用域范围局部变量 是在方法中定义变量局部变量三个步骤解释1.声明变量空格在代码中作用分割代码变量命名规则符合标识符规则和小驼峰命名且一般不以下划线__开头小驼峰命名规则 首字母小写其他单词首字母大写2.初始化变量赋值的内容要符合数据类型声明过变量后不用在写数据类型例如声明过int nubmer;赋值直接写nubmer10;即可3.使用变量输出或进行加减乘除等都为使用变量使用局部变量必须赋值4.连写声明变量初始化变量int numberTwoTest 20;Console.WriteLine(numberTwoTest);//连写意思为直接将三个步骤直接写完不再声明变量然后再赋值5.变量在同一个作用域中不能重复定义6.变量定义的连写int a,b;a10;b20;float c3.14f,i3.24f;dounle j,k3.14;//红字部分错误k赋值3.14但是j没有被赋值7.变量只能保存一个值且是最新的值但是变量可以改变无数次变量存储方式值栈引堆栈 堆栈系统自动管理堆托管堆安全受CLR管理CLR管理1.混合语言开发 2.GC内存管理C#自动回收GC内存栈上存储和读取比堆上快栈和堆是内存上面的两个区域。栈上存储的数据量少。堆上存在的数据量大引用类型会把数据的值存在到堆上而在栈上存储的仅仅是一个地址指针二、常量1.常量的概念不可变化的值 常量的值在程序运行时就已经确定了2.常量的分类:值类型常量 和字符串类型常量 和const 和 readOnlyconst 静态常量 readonly只读常量3.值常量值类型常量等号右边的内容都称为常量 左边都是变量例如int num10;//num是变量10是值类型常量关键字const 表示的变量也是一种常量const 表示的变量必须在声明时赋值例如const int num10;const写在变量前变量就变成了常量一旦赋值后常量不能被修改例如const int num10;num12;//会报错什么时候定义常量对于一些特殊的值比如颜色活着数据库连接字符串PI的值等等都可以用常量来表示从而提高代码的复用性求圆的周长double r 5.0;double perimeter 2 * PI * r;Console.WriteLine($圆的周长{perimeter });求圆的面积double area PI * r * r;Console.WriteLine($圆的面积{areaF2});三、输出及输入1.输出Console.WriteLine();换行并输出数据内容有无参形式无参形式时只执行换行命令Console.Write();不换行并输出数据内容同时没有无参的形式括号内必须写上内容2.输入内容到控制台Console.Read();从标准输入流读取下一个字符返回int类型输入内容输出的内容为输入的第一个字符对应的ASCII或Unicode值Console.ReadLine();从标准输入流读取下一行字符在输入完成之前程序不会继续往下执行即控制台输入内容不按回车输入内容会一直输入下去只有按回车后才继续执行下面代码Console.ReadLine();返回string类型Console.Read();返回int类型等待用户输入任意按键 继续执行后续代码Console.ReadKey();四、数据类型转换1.值类型之间的转换1、隐式转换 小转大例如int转为longint a10;long ba;//隐式转换可以省略要转化的类型2、显式转换 大转小例如long转为intlong a20;int b(int)a;/显式转换不可以省略要转化的类型3、为什么显式要写类型因为数据在转换过程中可能会丢失精度所以C#为了数据安全性让程序员自行决定4、bool类型转换为int 无法显式或隐式转换//数据类型转换 分为 1.值类型之间的转换2.引用类型之间的转换(后续讲) 3,字符串类型与值类型之间的转换 //1. 值类型之间的转换 分为 1.隐式类型转换 2.显示类型转换 //1.隐式类型转换 小区间转换成大区间 // 1.int类型 转换成long 类型 int intNum 10; // 隐式类型转换 int 转换成 long long longNum intNum; //输出 longNum的类型 System.Int64 Console.WriteLine(longNum.GetType()); //输出 intNum的类型 System.Int32 Console.WriteLine(intNum.GetType()); //2.float类型转换成double类型 float floatNum 10.5f; double doubleNum floatNum; //3.int类型转换成float类型 int intNum1 10; float floatNum1 intNum1; //2.显示类型转换 大区间转换成小区间 必须在加类型 //为什么要加类型 因为大区间转换成小区间时,可能存在数据精度丢失。 //1. long类型转换成int类型 long longNum1 10; int intNum2 (int)longNum1; //2..double类型转换成float类型 double doubleNum1 10.111112323232323232323; float floatNum2 (float)doubleNum1; //3.float类型转换成int类型 float floatNum3 10.1111f; int intNum4 (int)floatNum3; //补充 其他类型转换 //扩展: //整数和小数类型无法直接转换成bool类型 int intNum5 1; // bool boolNum6 (bool)intNum5; // 错误 提示无法将类型“int”转换为类型“bool” //bool类型无法转换成整数和小数类型 bool bool1 true; // int intNum6 (int)bool1; // 错误 提示无法将类型“bool”转换为类型“int” //单字符类型转换成整数类型 属于隐式类型转换 转换成对应的ASCII码 char charNumber1 a; int intNum6 charNumber1; Console.WriteLine(intNum6);2.字符串类型与值类型之间的转换1.字符串类型转换为值类型字符串的内容与转换的值类型要符合(即转换成整数时输入的字符串内容也要是数字字符串)配合使用parse方法Console.WriteLine(请输入一个字符串);string sConsole.ReadLine();//123int parseIntint.parse(s);//123string sConsole.ReadLine(); //abcint parseIntint.parse(s); //报错格式错误)Console.WriteLine(请输入一个字符串); string strint.Parse(Console.ReadLine());、string strNumber 123; int intNumber4 int.Parse(strNumber); Console.WriteLine(intNumber4); long longNumber4 long.Parse(strNumber); Console.WriteLine(longNumber4); byte byteNumber byte.Parse(strNumber); Console.WriteLine(byteNumber); uint uintNumber uint.Parse(strNumber); Console.WriteLine(uintNumber); float floatNumber4 float.Parse(strNumber); Console.WriteLine(floatNumber4); // 注意bool类型转换 string stringNumber5 true; bool boolNumber bool.Parse(stringNumber5); Console.WriteLine(boolNumber);int.TryParse 与 int.Parse 又较为类似但它不会产生异常转换成功返回 true转换失败返回 false。最后一个参数为输出值如果转换失败输出值为 0//尝试转换数据 如果不成功 会返回false结果 //成功返回 true int ab; //用于输出参数 string stringNumber6 a12; bool isSuccess int.TryParse(stringNumber6, out ab); string isSuccessStr isSuccess?转换成功:转换失败; Console.WriteLine(isSuccessStr); Console.WriteLine(ab); // 转换失败结果为 03.Convert 类型转换适用各种类型相互转换(强转类型)string num123;int num1Convert.ToInt32(num);string strConsole.ReadLine();bool str1Convert.ToBoolean(str);bool类型转换int类型bool atrue;int bConvert.ToInt32(a);//1注意bool类型不能直接转换成char类型//万能类型转换 任意类型之间转换 但是转换的内容要符合转换后类型的标准 //否则抛出异常 string stringNumber7 123; int intNumber7 Convert.ToInt32(stringNumber7); long longNumber7 Convert.ToInt64 (stringNumber7); short shortNumber7 Convert.ToInt16 (stringNumber7); uint uintNumber7 Convert.ToUInt32 (stringNumber7); ulong ulongNumber7 Convert.ToUInt64 (stringNumber7); ushort ushortNumber7 Convert.ToUInt16 (stringNumber7); float floatNumber7 Convert.ToSingle(stringNumber7); double doubleNumber7 Convert.ToDouble(stringNumber7); //bool类型转换整数 bool boolNum10 true; int intNum11 Convert.ToInt32(boolNum10); Console.WriteLine(intNum11); //整数类型转换为bool int intNum12 1; bool boolNum12 Convert.ToBoolean(intNum12); Console.WriteLine(boolNum12); //char类型转换整数 char charNum10 a; int intNum13 Convert.ToInt32(charNum10); //整数转换成char int intNum14 97; char charNum11 Convert.ToChar(intNum14); //bool 无法直接转换成char类型 可以先转换成整数 然后在转换成char bool boolNum14 true; //char charNum15 Convert.ToChar(boolNum14); //Console.WriteLine(charNum15); //中间变量 intNum15 int intNum15 Convert.ToInt32(boolNum14); Console.WriteLine(------------------------------); Console.WriteLine(intNum15); //最后转换成char类型 char charNum16 Convert.ToChar(intNum15); Console.WriteLine(--------------------------------); Console.WriteLine(charNum16); //总结值类型直接基本可以相互转换 但是注意内容格式4. .Tostring()适合其他类型转换成字符串int a110;bool b1true;char c1a;float a220.0f;string s1a1.ToString();string s2b1.ToString();string s3c1.ToString();string s4a2.ToString();其他类型转换成字符串类型 toString() //1.整数类型转换成字符串 int intNum17 100; string strNum17 intNum17.ToString(); //2.浮点数转换成字符串 float floatNum18 100.1111f; string strNum18 floatNum18.ToString(); //格式化浮点数 保留小数点位数 精度不够 补0 string strNum19 floatNum18.ToString(F5); //3.bool 类型转换字符串 bool boolNum20 false; string strNum20 boolNum20.ToString(); //4.char 类型转换成字符串 char charNum21 a; string strNum21 charNum21.ToString(); //5.时间类型转换成字符串 DateTime dataTime22 DateTime.Now; string strNum22 dataTime22.ToString(); Console.WriteLine(strNum22); //格式化时间类型 string strNum23 dataTime22.ToString(HH-mm-ss); Console.WriteLine(strNum23);五、运算符1.算术运算符加 -减 *乘 /除 %模取余 自增 --自减求和或字符串连接1.求和 值类型直接使用注意C#不支持float和decimal的运算但是可以显式转换成decimal类型在进行计算2.string之间拼接保证左右两边至少有一个字符串类型也是拼接字符串拼接int k10;string str1;string str1kstr;Console.WriteLine(str1);//101求和int k1Convert.ToInt32(str);Console.WriteLine(kk1);//11注意不能在object类型之间进行运算//算术运算符 // - * / %数字类型大类型和小类型结合 结果默认为大类型结果 //算术运算符 - * / % -- //1. 功能分为求和和字符串拼接 // 整数与整数相加 求和 // byte 与 byte 类型相加 byte intNum1 255; byte intNum2 255; //输出 byte与byte相加结果的类型 默认为int类型 Console.WriteLine((intNum1intNum2).GetType()); Console.WriteLine(intNum1 intNum2); //long与long相加 求和 结果类型为long long longNum1 255; long longNum2 200; Console.WriteLine((longNum1longNum2).GetType()); //int 和long 相加 结果类型为long long longNum3 100; int intNum3 100; Console.WriteLine((longNum3intNum3).GetType()); //uint和 int类型 相加 结果类型为long uint uintNum4 100; int intNum4 -1000; Console.WriteLine((uintNum4intNum4).GetType()); //小数与小数相加 //1.float类型相加 结果类型为float float floatNum1 10.5f; float floatNum2 10.5f; Console.WriteLine((floatNum1floatNum2).GetType()); //2.double类型相加 结果类型为double //3.double 类型与float类型相加 结果类型为double //4.double与 decimal类型相加 结果类型为decimal //整数和小数相加 结果类型为小数 //1.int类型与float类型相加 结果类型为float //2.int类型与double类型相加 结果类型为double //3.int类型与decimal类型相加 结果类型为decimal //bool与bool类型相加 错误bool类型之间无法相加 // bool boolNum1 true; // bool boolNum2 false; // Console.WriteLine(boolNum1boolNum2); //char类型与char类型相加 结果为int类型 加的是单字符的ASCII码值 char charNum1 a; char charNum2 b; Console.WriteLine((charNum1charNum2).GetType()); Console.WriteLine(charNum1charNum2); //char类型与int类型相加 结果为int类型 //char类型与float类型相加 结果为float类型 char charNum3 a; float floatNum4 10.1111f; Console.WriteLine((charNum3floatNum4).GetType()); int intNum11 10; float floatNum5 10.1111f; int intNum12 (int) (intNum11 floatNum5); Console.WriteLine(intNum12); //扩展 结果不能超出 byte类型范围 byte byteNum1 255; byte byteNum2 255; byte bytetNum13 (byte) (byteNum1 byteNum2); Console.WriteLine(bytetNum13); //扩展 结果不能超出 int类型范围 超过还是int类型 建议在运算考虑好 数值的类型范围 int intNum13 2147483647; int intNum14 1000000000; Console.WriteLine((intNum13 intNum14).GetType()); int intNum15 intNum13 intNum14; Console.WriteLine(intNum15); //字符串类型和字符串类型相加 拼接 string stringNumber 123; string stringNumber1 abc; string stringNumber2 stringNumber stringNumber1; //字符串类型和数字类型相加 拼接 string stringNumber3 123; int intNumber6 10; Console.WriteLine(stringNumber3 intNumber6); //字符串类型和数字类型其他操作 都是不允许的 //Console.WriteLine(stringNumber3 - intNumber6); //Console.WriteLine(stringNumber3 * intNumber6); //Console.WriteLine(stringNumber3 / intNumber6); //Console.WriteLine(stringNumber3 % intNumber6); //单字符和数字类型 //单字符ascii表对应的10进制数字和数字类型进行数学运算 char charNumber a; int intNumber7 10; //得到对应的单字符ASCII值 int charNumber1 (int)charNumber; Console.WriteLine(charNumber1); Console.WriteLine(charNumber intNumber7); Console.WriteLine(charNumber - intNumber7); Console.WriteLine(charNumber * intNumber7); Console.WriteLine(charNumber / intNumber7); Console.WriteLine(charNumber % intNumber7); // -- int intNumber9 10; intNumber9; intNumber9; // 12 14 13 13 int SumIntNumber (intNumber9) (intNumber9) - (--intNumber9) (intNumber9--); //26 Console.WriteLine(SumIntNumber); //12 Console.WriteLine(intNumber9);// 关系运算符 int intNumber10 10; int intNumber11 20; bool isTrue intNumber10 intNumber11; Console.WriteLine(isTrue); string stringNumber10 10; //字符串无法和数字类型比较 //bool isTrue1 intNumber10 stringNumber10; char charNumber10 a; bool isTrue2 intNumber10 charNumber10; Console.WriteLine(isTrue2); // 同上 // ! int intNumber12 100; int intNumber13 200; bool isTrue3 intNumber12 intNumber13; bool isTrue4 intNumber12 ! intNumber13; //字符串类型之间 ! 都能使用 string stringNumber12 123; string stringNumber13 abc; char charNumber12 b; bool isTrue5 stringNumber12 stringNumber13; bool isTrue6 stringNumber12 ! stringNumber13; bool isTrue7 charNumber12 97; //逻辑运算符 () ||(|) ! ^ // 短路 当其中一个条件为false时 后续的条件就不再判断 非短路 bool isTrue8 (stringNumber12 stringNumber13) (charNumber12 97); // || 短路 当其中一个条件为true时 后续的条件就不再判断、 | 非短路 bool isTrue9 (stringNumber12 ! stringNumber13) || (charNumber12 97); //取反 bool isTrue10 !isTrue9; // 异或 当两个布尔值相同时结果为 false否则结果为 true。 bool isTrue11 isTrue9 ^ isTrue8; //赋值运算符 int intNumber15 10; intNumber15 5; //变量intNumber15 自身增加5 //sizeof() 返回数据类型的大小。 Console.WriteLine(sizeof(int)); Console.WriteLine(sizeof(long)); //判断数据类型方式 GetType() int intNumber16 10; long longNumber17 20; Console.WriteLine(longNumber17.GetType()); Console.WriteLine(intNumber16.GetType()); Console.ReadKey(); //位运算符了解 int A 60; int B 13; //按位与运算 只要其中一个为0 结果0 反之为1 //A 0011 1100 //B 0000 1101 //C 0000 1100 int C A B; Console.WriteLine(C); //按位或运算 只要其中一个为1 结果1 反之为0 //A 0011 1100 //B 0000 1101 //D 0011 1101 int D A | B; Console.WriteLine(D); //按位异或运算符 两个位置上相同 结果为0 反之为 1 //A 0011 1100 //B 0000 1101 //E 0011 0001 int E A ^ B; //按位取反运算符 取不同位置的反向 0反向1 1反向0 //A 0011 1100 //F 1100 0011 int F ~A; Console.WriteLine(F); //左移运算符 //A 0011 1100 //G 1111 0000 int G A 2; //右移运算符 //A 0011 1100 //G 0000 1111 int H A 2; // 赋值运算符 - // 赋值 运算逻辑从右到左 int temp1 10; // 让变量自身增加任意的数值 int temp2 20; temp2 10; // temp2 temp210; temp2 1; //temp2; temp2 // - temp2 - 5; // temp2temp2-5; Console.WriteLine(temp2); // * / % 同上 // 左移且赋值运算符 C 2 等同于 C C 2 // 右移且赋值运算符 C 2 等同于 C C 2 // 按位与且赋值运算符 C 2 等同于 C C 2 //^ 按位异或且赋值运算符 C ^ 2 等同于 C C ^ 2 //| 按位或且赋值运算符运算顺序括号算位关逻条赋逗

更多文章