变量的作用:为了更好的管理内存数据,不同类型的数据存放在不同的内存块中。

变量的特点:不同数据类型占用的存储空间大小不一样。

变量的意义:内存地址是一串十六进制数,非常不好记忆,通过变量可以快速找到数据。

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){}占位符:使用方法先挖坑,在填坑。输出顺序按照挖坑顺序输出。

 Console.WriteLine("课程编号:"+courseID+"课程名称:"+courseName); //+起到连接作用

 Console.WriteLine("课程编号:{0}课程名称:{1}".courseID,coureName);//{}占位符的用法

 Console.WriteLine($"课程编号:{courseID},课程名称:{courseName}");//Framework 4.6语法糖

代码第5行的语法糖称为字符串的插值,这在.NET Framework框架中,比“+”的效率高很多,连接符+会占用很多内存。

注意:挖几个坑,填几个坑,多填没有效果,少坑抛异常。

异常:语法上没有任何错误,只不过运行期间,由于某些原因出现了问题,程序不在正确运行。

C#中的转义符:指的就是一个‘\’加上一个特殊的字符,组成了一个具有特殊意义的字符。

(1)\n:表示换行。(适用于console/winform/ios系统)

(2)\":表示一个英文半角双引号。

(3)\t:表示一个tab键的空格。4个或8个空格,空格多少取决于编译器。

(4)\b:表示一个退格键,删除前一个字符,放在字符串的两边没有效果。

(5)\r\n:表示换行(windows系统适用)

(6)\\:表示一个\。

@符号的意义:1)取消\在字符串中的转移作用。

2)将字符串按照原格式输出。


C#中的强制类型转换(显式)和自动转换(隐式)

显示的给变量赋以恶初始值,是我们编程的一个好习惯。

 Console.Write("请输入你的年龄");
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......   //最后的","可加可不加

}

 public enum Gender
{
Male,Female
} static void main(string[] args)
{
Gender gender=Gender.Maie; //定义枚举类型
Conssole.WriteLine(gender);
}

补充:若要获得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(要转换的枚举类型),“要转的字符串”);

举例如下

 string s = "";
QQState state = (QQState)Enum.Parse(Typeof(QQstate),s);

所以我们可以得到一下一条结论:

枚举类型默认和int类型相互兼容,所以可以通过强制类型转换语法转化。enum和string亦可。如果转换的字符串是数字,就算

枚举中没有,也不会抛异常。如果转换的是字符串文本,如果枚举中没有,则会抛异常。

练习:提示用户选择一个在线状态,接受,并将用户输入转换成枚举类型,打印到控制台中。

 Console.WriteLine("请选择您的QQ在线状态 1--OnLine 2--OffLine 3--Leave 4--Busy 5--QMe");
string input = Console.ReadLine(); switch(input)
{
case "":QQState s1 = (QQState )Enum.Parse(Typeof(QQState),input);
Console.WriteLine("您选择的在线状态是{0}",s1);
break; case "":QQState s2 = (QQState )Enum.Parse(Typeof(QQState),input);
Console.WriteLine("您选择的在线状态是{0}",s2);
break; case "":QQState s3 = (QQState )Enum.Parse(Typeof(QQState),input);
Console.WriteLine("您选择的在线状态是{0}",s3);
break; case "":QQState s4 = (QQState )Enum.Parse(Typeof(QQState),input);
Console.WriteLine("您选择的在线状态是{0}",s4);
break; case "":QQState s5 = (QQState )Enum.Parse(Typeof(QQState),input);
Console.WriteLine("您选择的在线状态是{0}",s5);
break;
}
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,整数部分若为偶数保留,舍掉小数部分,若为奇数,则进一位。


最后我们讲一讲关系运算符和逻辑运算符

关系运算符是用来描述两个事物之间的关系的

关系运算符:> < <= >= == !=

逻辑运算符:&& || !

C#语法基础----变量 符号 数据转换的更多相关文章

  1. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  2. python基础语法(变量与数据类型)

    python基础语法(变量与数据类型) 一.python变量 python中的变量不需要声明.每个变量在使用钱都需要赋值,变量赋值以后,该变量才会被创建 在python中,变量就是变量,它没有类型,我 ...

  3. Java基础语法(2)-变量

    title: Java基础语法(2)-变量 blog: CSDN data: Java学习路线及视频 1.什么是变量? 变量的概念 内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量 ...

  4. GO语言基础(结构+语法+类型+变量)

    GO语言基础(结构+语法+类型+变量) Go语言结构 Go语言语法 Go语言类型 Go语言变量       Go 语言结构 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 &a ...

  5. Java基础语法01——变量与运算符

    本文是对Java基础语法的第一部分的学习,包括注释:标识符的命名规则与规范:变量的数据类型分类以及转换:以及六种运算符(算术.赋值.比较.逻辑.三元和位运算符).

  6. javascript基础语法备忘录-变量和数据类型

    //javascript基础语法备忘录-变量和数据类型 // 定义变量使用var关键字 后面跟变量名,不要使用eval 和arguments为变量名 var message = "hi&qu ...

  7. 前端学习笔记--js概述与基础语法、变量、数据类型、运算符与表达式

    本篇记录js的概述与基础语法.变量.数据类型.运算符与表达式 1.概述与基础语法 2.变量 举例: 3.数据类型 4.运算符与表达式

  8. 了解JavaScript的语法基础,值和变量

    通过JavaScript语法基础学习了解到1.怎么使用js/*通常js的引入和css一样,分为内部,外部和行内引入,执行自上而下,有着先后顺序*/:2.js的语法/*2.1js是用字母,数字.特殊字符 ...

  9. Python基础部分:5、 python语法之变量与常量

    目录 python语法之变量与常量 一.什么是变量与常量 1.什么是变量 2.什么是常量 二.变量的基本使用 1.代码中如何记录事物状态 2.变量使用的语法结构与底层原理 3.变量名的命名规范 4.变 ...

随机推荐

  1. ceph 网络配置

    ceph 网络配置 9. 分离 public network 和 cluster network 9.1 分离的好处 (1)提高性能:消除副本创建.数据恢复和再平衡对 public network 的 ...

  2. swagger的配置

    // This method gets called by the runtime. Use this method to add services to the container. public ...

  3. JS内置对象-Array之splice-删插替

    splice-删除 var arr = [1, 2, 3, 4, 5, 6]; //删除 var delArr = arr.splice(1, 2) console.log(arr); // => ...

  4. android studio 刚安装需要配置的东西

    智能提示 调整log区域的字体 快捷键中文乱码 自动导入包 意思是创建成员变量的时候,以m开头 下载插件 提高编译的速度

  5. Socket与系统调用深度分析

    学习一下对Socket与系统调用的分析分析 一.介绍 我们都知道高级语言的网络编程最终的实现都是调用了系统的Socket API编程接口,在操作系统提供的socket系统接口之上可以建立不同端口之间的 ...

  6. 记一次 Kafka 集群线上扩容

    前段时间收到某个 Kafka 集群的生产客户端反馈发送消息耗时很高,于是花了一段时间去排查这个问题,最后该集群进行扩容,由于某些主题的当前数据量实在太大,在对这些主题迁移过程中话费了很长一段时间,不过 ...

  7. Node6-1单元测试mocha

    1.初步简单的测试 在src新建一个math.js的文件.src/math.js module.exports ={ add:(...args)=>{ return args.reduce((p ...

  8. 安卓逆向基础(001)-APK安装流程

    1.在/data/app下以报名为文件夹名新建文件夹 APK包存放在这里 以及lib文件 存放so 2./data/dalvik-cache 存放dex dex是dalvik虚拟机可执行文件 3./d ...

  9. 【CV现状-1】磨染的初心——计算机视觉的现状:缘起

    #磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...

  10. .NET Core 3终结点不能映射控制器

    今天在学.net core的时候发现了一个问题,终结点死活映射不了自己添加的控制器,后经过研究发现解决方法,可能这个问题不应该叫做问题,可是我是初学者,就把这个问题给拎出来.本人开发环境 VS2019 ...