51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 1771|回复: 0

[基础教程] C#基础--之数据类型

[复制链接]
  • TA的每日心情
    点赞
    4 天前
  • 签到天数: 678 天

    连续签到: 2 天

    [LV.9]以坛为家II

    147

    主题

    757

    帖子

    4475

    积分

    Rank: 9

    积分
    4475

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2016-9-28 14:58:55 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    在第一章我们了解了C#的输入、输出语句后,我这一节主要是介绍C#的基础知识,本节的内容也是后续章节的基础,好的开端等于成功的一半。在你阅读完本章后,你就有足够的C#知识编写简单的程序了。但还不能使用继承或其它面向对象的特征。
       本章主要针对以下几个部份来进行讲解:
       1、电脑是由什么来存储所使用的数据?
       2、基本数据类型有哪些?
       3、如何声明变量和赋值?
       4、变量和常量的区别?
       5、不同数据类型之间是如何转换的?
       下面,我们现一个一个的来了解这些问题。

       一、电脑是由什么来存储所使用的数据?
          这个问题用一句话比较笼统的概括,那就是:电脑使用内存来记忆计算时所使用的数据。
          在现实生活中的数据各种各样,整数、小数、字符串、字符等等,它们都类型是不一样的,所以你要想在计算机中使用这些类型,就必须在内存中为它申请一块合适的空间。
         那有哪些数据类型是C#能使用的呢?我们一起来看一看.
       
          二、基础数据类型有哪些
          首先要了解一点:C#认可的基础数据类型并没有内置于C#语言中,而是内置于.net Framework中。
          如,在c#中声明一个int类型的数据时,声明的实际上是.net结构System.Int32的一个实例。这听起来似乎很深奥,但其意义深远:这表示在语法上,可以把所有的基础数据类型看作是支持某些方法的类。
         类型实际上仍存储为基本类型。基本类型在概念上用.Net结构表示,所以肯定没有性能损失。
         下面大家一起来了解一下C#中定义的内置类型,我们将列出每个类型,以及它们的定义和对应的.net类型(CTS类型)的名称。
          c#有15个预定义类型,其中13个是值类型,两个是引用类型(string 和 object)
        1、整型
    2-10.jpg

       2、浮点类型
    2-4.JPG
        float数据类型用于较小的浮点数,因为它要求的精度较低。
        double数据类型比float数据类型大,提供的精度也大一倍(15位)。
        如果在代码中没有对某个非整数值(如12.3)硬编码,则编译器一般假定该变量是double。
        如果想指定该值为float,可以在其后加上字符F(或f),如:
             float f = 12.3F;

    3、decimal类型
        decimal类型专门用于进行财务计算,使用decimal类型提供的28位的方式取决于用户。
        要把数字指定为decimal类型,可以在数字的后面加上字符M或(m),如:
        decimal d=12.30M;

        4、bool(布尔)类型
    2-5.JPG

        5、char字符类型
    2-6.JPG
         char类型的字变量是用单引号括起来的。     如'A'
         如果把字符把在"A"(双引号)内,编译器会把它看作是字符串,从而产生错误。

        6、引用类型(Object类型和字符串类型)
    2-7.JPG

    三、如何声明变量和赋值
       1、变量的定义:是指在程序的运行过程中随时可以发生变化的量
        2、上面我们提到,变量在运行时当中是存在内存当中的,它是一个临时的存放场所。
             那么在内存当中,可以存放如数字、字符串、日期等等各种类型的数据。

    2-8.JPG
    大家可以看一看这张图,它就把表示内存当中的一个状态。

    简单的来说,变量就是表示内存当中的一块存储区域。

    它会对应一个唯一的内存地址,但是我们在使用程序当时候,内存地址不好理解也不好记忆。
    那么怎么办呢?

    在日常生活当中我们都有一个名字,如"张三“、”李四“等,这些名字就是为了便于记忆。
    那么同样,在程序当中,为了区别多个变量,那就需要为每个变量赋值一个简短,便于记忆的名字,
    这就是变量名

      3、 C#中的变量的命名是是有规则的:
             1)、由字母、数字或下划线"_"组成
             2)、必须由字母下划线"_"开头,不能以数字开头
             3)、不能是c#中的关键字 如:int、string、bool、Main、class等
             4)、区分大小写  如:小写的a  和  大写的A 是两个变量
    4、做为一个比较好的学习者,就必须遵守一些变量命名规范:
               1)、变量的名字要有意义,尽量用对应的英语命名,具有“见名知意“的作用。
                      如:姓名   变量取名为 name 或者 用拼单  xingMing,避免用a,b,c来进行命名。
               2)、避免使用单个字符作为变量名( 除在循环里面定的变量)
               3)、当使用多个单词组成变量名时,应该使用骆驼(Camel)命名法
                       骆驼(Camel)命名法:第一个单词的首字母小写,其它单词的首字母大写,如:myName,myAge
               
              选择题:以下变量命名正确的是(     )
                      A、name、 _222*1、 9class、 public
                      B、_teacher、 void、 string、 myName
                      C、$Age、 corss、 fire、 _grade
                      D、_glass、 g23、 c_12、 my_first_2


          5、变量的声明和赋值
              1)定义变量的语法:
                数据类型 变量名;      (定义一个年龄的变量,年龄是整数,所以变量定义如下:)
                  int          age;         [系统会根据数据类型,在内存中分配不同大小的存储空间]

                 每个数据类型后面,可以定义多个变量,如:(定义姓名、家庭地址、籍贯、民族)
                    string name,address,origin,national ;

        2)为变量赋值语法:
    = ;
                 (这里的=号表示赋值运算符,把=号右边的值,赋值给左边的变量名,最后以一个;[分号]结束)
                   如:年龄18岁,姓名为“小张",家庭地址为“重庆南坪XXX",
                          籍贯为“重庆",民族为“汉"
                    age = 18 ;
                    name = "小张" ;
                    address = "重庆南坪XXX" ;
                    origin = "重庆" ;
                    national = "汉" ;
    四、变量和常量的区别
             变量:是指在程序的运行过程中随时可以发生变化的量
            常量:是指在程序在运行过程中不会发生变化的变量

          常量的特点:
                       1、必须在声明是赋值
                       2、不能在在程序运行时,给常量赋值
                       3、常量是静态的。不必须(实际上,是不允许)在常量声明中包含修饰符static

    五、不同数据类型之间是如何转换的
           在C#中数据类型转换分为两种:1)隐式[又叫自动]类型转换     2)显式[又叫强制]类型转换
               举个简单例子:
               飞机场里面停飞机,这是理所当然,我们把这种叫做隐式[又叫自动]类型转换
               那如果我们反过来看一看,飞机里面装飞机场,这个在我们实际生活中,觉得这是根据不可能的,
               但是程序可能做到这一点,我们把这种叫做显式[又叫强制]类型转换
          在C#中数据类型转换分为两种:1)隐式[又叫自动]类型转换     2)显式[又叫强制]类型转换
               举个简单例子:
               飞机场里面停飞机,这是理所当然,我们把这种叫做隐式[又叫自动]类型转换
               那如果我们反过来看一看,飞机里面装飞机场,这个在我们实际生活中,觉得这是根据不可能的,
               但是程序可以做到这一点,我们把这种叫做显式[又叫强制]类型转换
               double和int之间就是(飞机场与飞机)这种关系,我们可以这样理解,double的取值范围比int要大得多
               所以double可以装得下int :
              int a=1234;   
              double b=a;   系统会把a整型变量的值赋值给double变量b.这就是隐式[又叫自动]类型转换

             那反过来:
             double a=1234;
             int b=a;        //系统编译时会报错,如图:
              2-9.JPG
               那如何进行强制转换呢?c#提供了非常简便的方法,如:
              double a=1234;
              int b=(int)a;      //这样就强制把double类型,转换为int类型

             最后,再介绍一下,其它数据类型之间的转换(1、字符串转换为其它类型   2、任意类型之间的转换)
             1)、字符串转换为其它类型      
           语法:
            XX.Parse(字符串);         这里的xx代表的如:double,int,bool等
             举个例子来说明一下:
              string strValue="123.45";     //这是一个字符串,时面的值是"123.45"
              现要把它转换成小数类型,就可以使用double.Parse();来进行转换
             double dValue=double.Parse(strValue);

           2)、任意类型之间的转换
            语法:     
             Convert.ToXX(任何类型);
             如:把一个布尔类型转换为整型
                      bool a = true;
                      int b = Convert.ToInt16(a);
                     Console.WriteLine("转换后的结果是:"+b);  //转换后的结果是:1
    2-3.JPG

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    有问题需要咨询站长?| 申请友链| 小黑屋| 手机版| Archiver|  

    粤ICP备15095995号-2 粤公网安备44030602000670号

    CopyRight © 2015-2020 51Halcon机器视觉. Tencent Cloud X3.4.

    快速回复 返回顶部 返回列表