变量的作用:为了更好的管理内存数据,不同类型的数据存放在不同的内存块中。
变量的特点:不同数据类型占用的存储空间大小不一样。
变量的意义:内存地址是一串十六进制数,非常不好记忆,通过变量可以快速找到数据。
1.要确定存储的数据的类型。
2.给这块空间起一个有意义的名字,方便我们使用空间中的内容。
存储变量的语法:
变量类型 tagName;
tagName = value;
C#中数据类型(数值类型/引用类型):
1)整数类型int:只能存储整数,不能存储小数。
2)小数类型double:既能存储小数,又能存储整数。
3)金钱类型decimal:用来存储金钱,值后面加m。
4)字符串类型string:用来存储文本,也可存储空,要用“”括起来。
5)字符类型char:用来存储单字符,不能为空。
值类型默认是0
下面介绍两个特殊的值类型(NaN和Infinity)
记住一条结论:Infinity*0,结果是0.而NaN*0的结果认识NaN。
下面描述一下C#和PLC中数据类型的取值范围,它们还是有许多不同之处的,如下表:
C# | PLC | |
int | -231~231 | -32767~32768 |
double | +-5*10-324~+-1.7*10308 | (DINT)-2147483648~-2147483648 |
decimal | (-7.9*1028~7.9*1028)/100~28 | |
string | 不适用 | 不适用 |
char | 不适用 | 不适用 |
变量的使用规则:使用变量,要先声明后赋值在使用
变量的命名规则:
(1)必须以字母或“_”开头,不要以数字开头
(2)后面面可以跟任意字母,数字和_。
注意:1.变量名不要有C#关键字重复。
2.C#中大小写敏感。
3.同一个变量不要重复定义。
变量命名的方法:
1)Camel骆驼命名规则:要求变量名单词首字母小写,其余单词首字母大写,多用于变量或字段的命名。
2)Pascal命名规则:要求每个单词首字母大写,多用于类或方法命名。
C#中及格常用符号:
(1)“+”号:1.当“+”两边有一个是字符串时候,起连接作用。
2.“+”两边是数字是相加。
(2){}占位符:使用方法先挖坑,在填坑。输出顺序按照挖坑顺序输出。
1 Console.WriteLine("课程编号:"+courseID+"课程名称:"+courseName); //+起到连接作用 2 3 Console.WriteLine("课程编号:{0}课程名称:{1}".courseID,coureName);//{}占位符的用法 4 5 Console.WriteLine($"课程编号:{courseID},课程名称:{courseName}");//Framework 4.6语法糖
代码第5行的语法糖称为字符串的插值,这在.NET Framework框架中,比“+”的效率高很多,连接符+会占用很多内存。
注意:挖几个坑,填几个坑,多填没有效果,少坑抛异常。
异常:语法上没有任何错误,只不过运行期间,由于某些原因出现了问题,程序不在正确运行。
C#中的转义符:指的就是一个‘’加上一个特殊的字符,组成了一个具有特殊意义的字符。
(1) :表示换行。(适用于console/winform/ios系统)
(2)":表示一个英文半角双引号。
(3) :表示一个tab键的空格。4个或8个空格,空格多少取决于编译器。
(4):表示一个退格键,删除前一个字符,放在字符串的两边没有效果。
(5) :表示换行(windows系统适用)
(6)\:表示一个。
@符号的意义:1)取消在字符串中的转移作用。
2)将字符串按照原格式输出。
C#中的强制类型转换(显式)和自动转换(隐式)
显示的给变量赋以恶初始值,是我们编程的一个好习惯。
1 Console.Write("请输入你的年龄"); 2 int age=int.Parse(console.ReadLine());
3 int age=string.ConverttoINT32(console.ReadLine());
这里还要说一点,我们已经知道,string类型我们可以赋空,语法有以下几种方式
1)string tag="";
2) string tag=null;
3) string tag=string.Empty;
下面我们介绍一个与变量对应的----常量
当我们希望某一个值不希望被人修改,可以使用常量。
常见应用:数学计算,上位机某些设备参数的定义。
常量的定义要求:
(1)必须在定义的时候就初始化(赋值)
(2)常量的名字全部大写(建议)
(3)常量的命名要有意义。
语法:const Type tag = value;
枚举的使用
枚举的作用:1.可以表示一组描述的名称,还可以有对应的“整数值”(默认从0开始)
2.定义一组有限制,方便我们使用(个数不要太多)
枚举的语法:
[public] enum 枚举名
{
值1,
值2,
值3...... //最后的","可加可不加
}
1 public enum Gender 2 { 3 Male,Female 4 } 5 6 static void main(string[] args) 7 { 8 Gender gender=Gender.Maie; //定义枚举类型 9 Conssole.WriteLine(gender); 10 }
补充:若要获得int类型,(int)gender;支持显示强制转换,枚举类型和int类型是兼容的。
public:访问修饰符,公开的,哪里都可以访问
枚举名:符合Pascal命名规范。
将枚举声明在命名空间下,类的上面。
将enum类型强制转换成string类型
所有的类型都能转换成string类型,调用ToString()方法去转换。
比较麻烦的是将string类型转换成enum类型
这里先介绍三种转换的方法
(1)Convert.ToType()
(2)Type.TryParse()
(3)Type.Parse()
调用Parse()方法的目的就是为了让他帮助我们将一个字符串转换成对应的枚举类型。
语法:(要转换的枚举类型)Enum.Parse(Typeof(要转换的枚举类型),“要转的字符串”);
举例如下
1 string s = "0"; 2 QQState state = (QQState)Enum.Parse(Typeof(QQstate),s);
所以我们可以得到一下一条结论:
枚举类型默认和int类型相互兼容,所以可以通过强制类型转换语法转化。enum和string亦可。如果转换的字符串是数字,就算
枚举中没有,也不会抛异常。如果转换的是字符串文本,如果枚举中没有,则会抛异常。
练习:提示用户选择一个在线状态,接受,并将用户输入转换成枚举类型,打印到控制台中。
1 Console.WriteLine("请选择您的QQ在线状态 1--OnLine 2--OffLine 3--Leave 4--Busy 5--QMe"); 2 string input = Console.ReadLine(); 3 4 switch(input) 5 { 6 case "1":QQState s1 = (QQState )Enum.Parse(Typeof(QQState),input); 7 Console.WriteLine("您选择的在线状态是{0}",s1); 8 break; 9 10 case "2":QQState s2 = (QQState )Enum.Parse(Typeof(QQState),input); 11 Console.WriteLine("您选择的在线状态是{0}",s2); 12 break; 13 14 case "3":QQState s3 = (QQState )Enum.Parse(Typeof(QQState),input); 15 Console.WriteLine("您选择的在线状态是{0}",s3); 16 break; 17 18 case "4":QQState s4 = (QQState )Enum.Parse(Typeof(QQState),input); 19 Console.WriteLine("您选择的在线状态是{0}",s4); 20 break; 21 22 case "5":QQState s5 = (QQState )Enum.Parse(Typeof(QQState),input); 23 Console.WriteLine("您选择的在线状态是{0}",s5); 24 break; 25 } 26 Console.Readkey();
C#中常用的运算符和数据转换
(1)赋值运算符“=”
(2)算数运算符:+ - * / % ++ --
其中要说明一点%适用于所有值类型,且结果不一定为整数。
自动类型转换
1.两种类型必须是值类型(int和double/foalt)
2.目标类型取值范围必须大于要转换的类型,例如double和int
显示类型转换的几种方法:
(1)类型直接转换(值类型之间)
(2)Parse转换(string--->值类型)
(3)Convert万能转换器(任意类型之间)
需要指出的是object类型的转换方法,需要一步一步转换,不能一步到位。
例如: object a = 10.25;
int result = (int)(double)a;
string--->值类型:对于Parse()方法来说要求字符串的格式必须符合目标类型的有效形式。
例如:int a = int.Parse("20.5")这样是会抛异常的。
避免上一个问题的异常就是使用Convert()方法。
下面介绍一种特殊情况:
如果小数部分为0.5,整数部分若为偶数保留,舍掉小数部分,若为奇数,则进一位。
最后我们讲一讲关系运算符和逻辑运算符
关系运算符是用来描述两个事物之间的关系的
关系运算符:> < <= >= == !=
逻辑运算符:&& || !