C#基础--之数据类型

C#基础–之数据类型
在第一章我们了解了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、浮点类型
在这里插入图片描述

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(布尔)类型

在这里插入图片描述

5、char字符类型

在这里插入图片描述

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

6、引用类型(Object类型和字符串类型)

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

 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;        //系统编译时会报错,如图:
       
    
       那如何进行强制转换呢?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

ok, 经过以上的学习,我相信大家对C#的一些基础知识有一定的了解,那么下一章我将介绍C#的算术运算符、逻辑运算符、关系运算符,以及控制程序流的语句。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/537452.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于PyAutoGUI图片定位的自动化截图工具--jmeter部分(2)

1、计划 压测完成后需要编写性能测试报告,报告中所需数据截图较多,使用自动化操作方便快捷,就编写一个界面工具以便后续复用。 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分   使用pyautogui 库操作鼠标键盘,按钮根据截取…

汇舟问卷:做调查问卷需要准备什么?

大家好,我是汇舟问卷。海外问卷调查分为很多个种类,接触最多的有站点查、口子查和渠道查,每种调查的方式都是不一样的。 几年前口子查的操作门槛还是很低的,我们只需要在国外的社交网站上搜索调查问卷、调查这些类似的文字就能获…

MongoDB爬虫:(某扑)实战

https://bbs.hupu.com/bxj网页地址: https://bbs.hupu.com/bxj 然后我们在网页上定义帖子名称、帖子链接、创建时间、回复数、最后回复用户...... 除此之外,我们发现虎扑步行街最多显示的页数(20): 、 当我们打开第3页的时候,网页的URL的地址变为了:https://bbs.hupu.…

基于java+springboot+vue实现的西安旅游系统(文末源码+Lw)23-265

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统西安旅游系统信息管理难度大,容错率低&#…

一文看尽西周275年12王历史

周朝是中国历史上继商朝之后的第三个王朝。周王朝一共传国君 32 代 37 王,享国共计 790 年。周朝分为“西周”(前 1046-前 771 年)与“东周”(前 770 年-前 256 年)两个时期。 西周由周武王姬发…

Bug及异常:unity场景角色移动卡墙壁的问题

场景是一个小的杠铃形状封闭空间,美术没有给包围盒,我自己用blender做了一个(属于兴趣爱好),如下: 导入场景中使用meshcollider做成空气墙,发现角色移动到角落继续行走会卡角落处&#x…

TSINGSEE青犀AI智能分析网关V4人员睡岗检测算法介绍及应用

人员睡岗AI算法是一种通过人工智能技术来检测和预警人员是否处于睡眠状态的算法。它主要通过分析人员的行为、姿势和身体特征等信息来判断人员是否已经进入睡眠状态。该算法通过对监控摄像头捕捉的画面进行实时分析,利用卷积神经网络(CNN)对图…

LongVLM:让大模型解读长视频 SOTA 的方法

LongVLM:让大模型解读长视频 SOTA 的方法 使用LongVLM处理长视频的步骤LongVLM 方法3.1 总体架构3.2 局部特征聚合3.3 全局语义整合 效果4.1 实验设置4.2 主要结果4.3 消融研究4.4 定性结果 论文:https://arxiv.org/pdf/2404.03384.pdf 代码&#xff1a…

适配器模式类图与代码

某软件系统中,已设计并实现了用于显示地址信息的类Address,现要求提供基于Dutch语言的地址信息显示接口。为了实现该要求并考虑到以后可能还会出现新的语言的接口,决定采用适配器(Adapter)模式实现该要求,得到如图7.9所示的类图。 【Java代码…

硬件学习件Cadence day16 做个笔记,BOM 位号这个参数输出的两种情况。

1. BOM 中位号有3种情况 1. 一种是位号生成时多行,每行是固定的位数。(如下图所示) 2. 一种是位号生成时只有一行,但是可以使用表格中自动换行功能,给他换行,但是这个位号本质上只有一行,只是因…

可视化后台管理系统-空框架

1.下载element-plus npm install element-plus --save 注意:element-ui不适配vue3,官方已将vue3版本的更新为element-plus 2.main.js配置 // 全局样式 import ./assets/main.cssimport { createApp } from vue import { createPinia } from piniaimpo…

【教学类-52-02】20240412动物数独02(四宫格)黏贴卡片

作品展示 背景需求 制作了动物数独4宫格后,需要再做一些黏贴上去的图片 【教学类-52-01】20240411动物数独(4宫格)-CSDN博客文章浏览阅读53次。【教学类-52-01】20240411动物数独01(4宫格)https://blog.csdn.net/rea…

中科方德服务器操作系统安装zabbix5.0

原文链接:中科方德服务器操作系统安装zabbix5.0 Hello,大家好啊!接着我们上一次的讨论,今天我要为大家介绍如何在已经安装好的中科方德服务器操作系统基础上,安装和配置Zabbix 5.0。Zabbix是一个开源的监控软件工具&am…

C语言 | Leetcode C语言题解之第24题两两交换链表中的节点

题目: 题解: struct ListNode* swapPairs(struct ListNode* head) {struct ListNode dummyHead;dummyHead.next head;struct ListNode* temp &dummyHead;while (temp->next ! NULL && temp->next->next ! NULL) {struct ListNod…

[Python图像识别] 五十二.水书图像识别 (2)基于机器学习的濒危水书古文字识别研究

该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。目前我进入第二阶段Python图像识别,该部分主要以目标检测、图像…

go语言学习--3.常用语句

目录 1.条件语句 1.1 if语句 1.2 if-else语句 1.3 switch语句 1.4 select语句 2.循环语句 2.1循环处理语句 2.2循环控制语句 3.go语言关键字 1.条件语句 和c语言类似,相关的条件语句如下表所示: 1.1 if语句 if 布尔表达式 {/* 在布尔表达式为 t…

前端常见面试题-CSS盒模型

前言: 什么是CSS盒模型?盒模型的构造? 在前端开发中,CSS 盒模型是一种非常基础且核心的概念,它描述了文档中的每个元素被框架处理的方式。 ---- 打开浏览器开发者工具,查看Elements右侧下的Styles底部。 …

C++ | Leetcode C++题解之第21题合并两个有序链表

题解&#xff1a; 题解&#xff1a; class Solution { public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {ListNode* preHead new ListNode(-1);ListNode* prev preHead;while (l1 ! nullptr && l2 ! nullptr) {if (l1->val < l2->val) {prev-…

Python用于模拟量子系统库之qutip使用详解

概要 QuTiP(Quantum Toolbox in Python)是一个用于模拟量子系统的开源Python库,它提供了丰富的工具来研究量子力学和量子信息学。 安装 通过pip可以轻松安装QuTiP: pip install qutip特性 多种量子对象表示:支持量子态、算符和超算符的表示和操作。 动力学模拟:提供了…

LeetCode 98 验证二叉搜索树

题目描述 验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜…