当前位置: 首页 > news >正文

c#笔记-内置类型

内置类型

内置类型是一些有关键字表示的类型。关键字具有非常高的优先级,可以让你在没有别的配置的情况下,
只要用的是c#就可以使用。这也意味着这些类型是非常重要,或是基本的东西。

  • 整数:byte, sbyte, short, ushort, int, uint, long, ulong
  • 浮点数:float, double, decimal
  • 布尔:bool
  • 文字:char, string
  • 其他:object, dynamic

整数类型

整数类型一共有8种。他们的区别的所占的字节数,和有没有储存符号。

内容1字节2字节4字节8字节
有符号sbyteshortintlong
无符号byteushortuintulong

以byte为例子。他占1字节,所以有8位。一共能表示2的8次方种情况。所以他一共能表示256个数。
由于最小的是全0的情况,这时候数字就是0。从0开始数256个数,只能数到255。
所以他的计数范围是0到255

一个字节(byte)有8个比特(bit)。比特和位是同义词。在计算机的语境下,这里的位都是二进制计数。
二进制数数起来像这样:0(0),1(1),10(2),11(3),100(4),101(5),110(6),111(7),1000(8)。
可以看到这里面的每一位数都跟2的次方有联系。

而sbyte也是1字节8比特。区别在于拿出了1位表示符号。他也能表示256个数,但是范围纳入了负数。
他的计数范围是-128到127

所以,最常用的int类型,32位,有符号,计数范围就是-21亿到21亿

short意思是短,long的意思是长。他们刚好是int类型的一半和翻倍。
而int是integer的缩写。integer的意思是整数。

浮点数

浮点数的意思是,小数点可以浮动(不固定)。这种计数方式是从科学计数法得到的灵感。
例如120000,可以表示为12*10的4次方。可以说把一个整数12,的小数点向右移动4位数,就得到了120000这个数。
而缺点,科学计数法本身也没有精确计数的意思。浮点数可以表示小数和很大的数,但精确度有限。
比如300万+1/300万,是加不上去的。

浮点数的计数范围计算比较复杂,只列出结果。

关键字中文比特上限精度
float单精度浮点类型323.4E+38223
double双精度浮点类型641.79E+308252
decimal十进制浮点数1287.92E+28296

布尔

乔治·布尔是一位英国数学家,他创立了布尔逻辑,使得不同的逻辑表达式有了一种通用的数学运算方式。
布尔值只有两个值,真(true)和假(false)。这两个值的主要作用就是逻辑计算,也就是用于布尔逻辑。

文字

char类型表示一个字符。在c#中使用utf-16编码储存。每个char只能表示一个字符,不能多也不能少。
string类型表示一堆字符。可以多,也可以一个字符都没有。

其他

object,是c#中所有类型的根源,他作为变量时可以存储任何值。
(但这个类型没有职责,所以他即不能像数字一样运算,也不能像文字一样裁剪)。

dynamic,动态类型。为了可以储存所有值,他也是使用object储存值。但他会让编译器尝试执行你代码中的职责。

object o = 12;
dynamic d = 12;
int i = 12;Console.WriteLine(o + 12);//objcet类型没有数学运算的职责,编译器会对这个要求报错
Console.WriteLine(d + 12);//编译器不会检查动态类型的职责。但如果运行时确实无法履行这个职责,则报错
Console.WriteLine(i + 12);//正规的数字类型,他可以进行数学运算

字面量

字面量是源代码中用来直接表达固定值的一种表示法,它与一般的值不同,不需要进行构造。

整数的字面量

自动类型

通常情况下,整数的字面量都是int类型。
但是,如果超出int的范围,会逐步变为long,ulong类型。
如果再超出则会报错。

var i1 = 100;//int
var i2 = 10000000000000000;//long
var i3 = 10000000000000000000;//ulong
var i4 = 100000000000000000000000000000000000000;//报错

如果你没有按照前章节的操作打开类型提示,可以将鼠标悬浮在变量名上查看类型。
在这里插入图片描述

强制类型

在数字的后面可以加后缀,使得强制变为某种类型

  • u:uint或ulong,基于当前常量的大小
  • L:long
  • ul:强制为ulong类型

后缀的大小写不限,但为了和数字1区分开,在使用L后缀时通常使用大写。
后缀的顺序不限,虽然只有ul会有顺序。

var i5 = 100u;//uint
var i6 = 10000000000000000u;//ulong
var i7 = 100L;//long
var i8 = 10000uL;//ulong

2进制和16进制

在数字的开头加上0b,可以让这个数字以2进制的方式构造字面量。
在数字的开头加上0x,可以让这个数字以16进制的方式构造字面量。

var i9 = 0b10000;
var i10 = 0x1a;
Console.WriteLine(i9);//16
Console.WriteLine(i10);//26

分隔

为了防止数字过大的时候数不清,可以添加下划线_来作为分割符。
下划线可以随意使用,不限位数,也能连续使用。但是必须用在数字的之间,不能在开头和结尾。

var i11 = 1_000_000;
var i12 = 100_000;
var i13 = 1_0__0___0_____0______0;

浮点数的字面量

强制类型

无修饰的浮点数字面量始终是double类型。
可以在后面加上f改为float类型,或是在后面加上m改为decimal类型。
是如果用的就是整数字面量,也可以加上d来改为double类型。

var f1 = 12f;
var f2 = 12.0f;
var d1 = 12d;
var d2 = 12.0;
var m1 = 12m;
var m2 = 12.0m;

省略整数部分

浮点数需要带上小数点,或是后缀才能视为浮点数。
小数点后面必须有至少一个数字,可以是全0。但小数点前面的数字是可以省略的。

var d3 = 0.0;
var d4 = .0;

科学计数法

浮点数可以使用字母e的科学计数法表示数。
但不像科学计数法要求前面的值在1到10之前。

var d5 = 1e4;//10000
var d6 = 12e-2;//0.12
var d7 = 0e9;//0

分隔

和整数一样可以使用下划线分隔。但是如果有小数点,分隔不能出现在小数点前面。

布尔的字面量

布尔值的字面量只有两个,他们都是关键字:true和false。

var b1 = true;
var b2 = false;

文本的字面量

字符的字面量使用一对单引号包围,不能多也不能少。
字符串的字面量使用一对双引号包围,可以任意长,包括没有值。但是字面量不能包含换行。

var c1 = 'a';
var c2 = '好';
var s1 = "";
var s2 = "你好世界";

转义

由于这两种引号都被我们用来表示字面量的范围,因此我们想在文本字面量里表示引号是很困难的。
为了可以表示引号,换行等一系列特殊字符,需要使用转义。
转义使用反斜杠\(退格键和回车键附近)开始,他跟接下来的特定组合会合并为一个字符。

例如表示引号,反斜杠自身,都是在反斜杠后加上他们自身。

var c3 = '\'';//会输出'
var s3 = "\"\\";//会输出"\

而其他的常见组合有

  • \n:换行
  • \t:水平制表符
  • \uxxxx:直接转义一个unicode编码
var c4 = '\u5238';//输出卷
var s4 = "1\t1\n11\t1\n111\t1\n1111\t1";//水平制表符可以根据以及用的字符数量,自动决定生成多少个空格
Console.WriteLine(s4);

转义组合的字符,会有特殊的颜色。
在这里插入图片描述

原始字符串

有的时候,我们会从其他地方复制东西过来。
从文件路径复制来的文字中,含有大量反斜杠。
从网页源码复制来的文字中,含有大量引号。

为了便于修改,可以使用原始字符串。原始字符串会无视内部的所有转义,以原样生成。
原始字符串使用3个或更多的双引号开头,以相同数量的引号结尾。

Console.WriteLine("""C:\Program Files\dotnet\packs""");
Console.WriteLine("""""用户输入{""""}""""");//如果字符里面的连续引号过多,就增加原始字符串首尾引号数量,直到文本中的引号不会有歧义。

在使用多行原始字符串时,首尾的引号必须单独放置在一行,不能包含内容文字。
首末行不会被记录一个换行。结束引号的前面有多少个空格,文本就会裁剪等量的前导空格。
内容行首不能超过收尾引号。

string s5 = """宽度=480px;高度=640px;""";
Console.WriteLine(s5);

指定类型的变量声明

不一样的类型

使用var创建的变量,总是会识别右侧值的类型。
但有时候,声明的变量类型可能不希望跟值的类型完全一样。
例如,字面量无法生成byte类型的数字。必须使用指定类型声明。

byte b = 12;

分开声明和赋值

使用指定类型声明变量,可以不需要在第一次声明的时候就赋值。
但在第一次使用之前需要赋初始值。

int i;
i = 12;

同时声明

使用指定类型,可以在一条语句里声明多个变量,只需要用逗号隔开变量名。

object o1, o2, o3, o4;

类型转换

隐式自定义类型转换

一些类型之间写了类型转换的方式。例如从char到int。
他们本来没有兼容,但是源码写了从char到int的转换方式,所以可以转换。
而char没有写到string的转换,所以即便他们很像也不能把char值赋值给string变量。

int i14 = 'a';//会得到这个字符的编码
string s7 = 'a';//报错

字符的储存是列一张表。规定数字1对应字符a,数字2对应字符b这样子。
这张表就叫字符集。把char值赋值给int变量会得到他的编码。
char类型是utf-16编码储存,也就是说是一个无符号16比特数据,跟ushort一样。

显式自定义类型转换

有些不兼容的类型,写了显示转换。
这种转换方式需要多一个步骤,在前面用括号写上目标类型。
这个作用是告诉你,结果可能不是你想要的,小心点。

double d8 = 6.8;
int i15 = (int)d8;//会得到6。小数不会四舍五入,而是完全舍去。

所有隐式转换都可以以显示转换的方式写。有效,但没意义。

基于继承的类型转换

一个类型继承另一个类型时,会获得他的全部职责。那么,就可以当作那个类型使用。
(香蕉类型继承自水果类型。水果能干什么香蕉就能干什么)
所以作为所有类型的基类object,没有设置过多的职责。

object o5 = 12;

继承关系是真正的类型兼容,自定义转换不能指定有继承关系类型的转换。

基于派生的类型转换

int继承自object,所以一个object值有可能是int值。
这种转换同样要在前面加括号写上目标类型,说明可能出错。

object o5 = 12;
int i16 = (int)o5;//o5确实是int类型。
string s7 = (string)o5;//o5不是string类型,int也没有对string的兼容。会出错。

工厂设计模式构造值

工厂模式是说根据配置的不同,创造出不同的值。
屏幕识图根据图片(配置)识别出文字(创造值)就是一种工厂模式。
类似的,把文字转化为数字,也可以使用工厂方法。

所有数字类型都有一个Parse方法,接收一个字符串,来构造一个数字。

int i17 = int.Parse("60");
double d9 = double.Parse("2.5");
Console.WriteLine(i17*d9);

用于识别的字符串必须是有效的数字,例如有不是数字的东西(开头表示正负的+-除外),
或者整数类型去识别一个小数,或者识别了超出自己范围的数字都会出错。

相关文章:

c#笔记-内置类型

内置类型 内置类型是一些有关键字表示的类型。关键字具有非常高的优先级,可以让你在没有别的配置的情况下, 只要用的是c#就可以使用。这也意味着这些类型是非常重要,或是基本的东西。 整数:byte, sbyte, short, ushort, int, ui…...

功能齐全的 DIY ESP32 智能手表设计之原理图讲解一

相关设计资料下载ESP32 智能手表带心率、指南针设计资料(包含Arduino源码+原理图+Gerber+3D文件).zip 目录 USB部分原理图讲解 供电部分原理图讲解 USB转串口原理图讲解...

8年测试经验分享,15K的测试工程师需要掌握那些知识?

软件测试行业是随着软件产业的发展而兴起的一个重要领域,目前处于快速发展阶段。以下是软件测试行业的现状: 人才需求增长:随着互联网、移动互联网、物联网等新技术的不断发展,软件测试人才需求呈现出快速增长的趋势。越来越多的…...

利用通信基础设施提高电网的稳态稳定性(Matlab代码实现)

目录 1 概述 2 稳态稳定性分析 2.1 系统模型 2.2 稳态稳定性 2.3 问题说明 3 仿真结果 4 Matlab代码 1 概述 随着电力系统的复杂性和规模的增加,电力系统的有效控制变得越来越困难。我们提出了一种自动控制策略,该策略基于通过通信基础设施获得的…...

MySQL 一条SQL语句是如何执行的?

总览 ​ 所以今天我们把MySQL拆解一下,看看里边有哪些零件。下边是MySQL的基本架构示意图。 大体来说,MySQL分为Server层和存储引擎两部分。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能&am…...

plt.imshow 全黑解决办法

# 标签有时候数据偏小,需要给赋予其他颜色方便可视化 image_file "/root/autodl-tmp/datasets/consep/labels/train/000.png"classes (background,Epithelial, Inflammatory, Spindle-Shaped, Miscellaneous) palette [[0, 0, 0], [129, 127, 38], [12…...

有趣的地理题

题目 总部位于上海的“哔哩哔哩”(简称B站),是国内知名的视频网站。在B站投稿的用户被称为“UP主”。据统计,B站的UP主群体中,来自上海的比例最高,200万粉丝以上的UP主,来自上海的比例超过 30 …...

DD驱动鼠标键盘(驱动级别机器人使用鼠标键盘)

官网下载 DD虚拟键盘虚拟鼠标 github下载 GitHub - ddxoft/master 点击下载后,将驱动包下,这里以win7为例 setup运行安装 安装成功后 可以打开电脑管理,可以看见DD虚拟鼠标和键盘 这里以JAVA接入为例 使用管理员权限启动eclipse &#…...

每日学术速递4.30

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Masked Frequency Modeling for Self-Supervised Visual Pre-Training(ICLR 2023) 标题:用于自监督视觉预训练的掩蔽频率建模 作者:Jiahao Xie, Wei Li, Xi…...

K8S部署及常见问题处理

目录 k8s kubeadm 一键自动化,安装k8s集群,安装所有运行需要的组件 一、环境初始化(三台机器都需要执行) 主机名、节点ip、部署组件 1、配置hosts(主节点master和业务节点node都需要配置)文件内容 2、…...

通过Robotstudio修改机器人程序的具体方法和步骤

通过Robotstudio修改机器人程序的具体方法和步骤 基本步骤可参考以下内容: 用网线连接机器人和电脑,机器人一侧要插入LAN2口;机器人和电脑的IP地址要在同一个网段内;请求写入权限;修改程序—编译—应用;加载修改后的程序到机器人;保存Robotstudio程序到电脑端;只能修改…...

第40讲:Python for-in循环语句使用索引遍历序列

文章目录 方法一:遍历的是序列的元素方法二:遍历的是序列的索引方法三:while循环遍历实现方法四:调用内置函数enumerate实现1.什么是enumerate函数2.调用内置函数enumerate实现索引遍历序列 如果在遍历序列的过程中,需…...

如何用Jmeter压测Netty的Echo服务之自定义Jmeter的Java Sampler

前言 如果想要压测一些三方组件,比如MQ,redis什么的,jmeter本身是不支持的。 本文以开发一个压测netty的echo示例,说明如何自定义jmeter的sampler。 开发 本文以idea示例, 新建工程 打开idea新建一个空的maven工程…...

GPT3.5之运用之检查模型是否满足条件

策略三:要求模型检查是否满足条件* 如果任务做出的假设不一定满足,我们可以告诉模型先检查这些假设,如果不满足,指示并停止执行。你还可以考虑潜在的边缘情况以及模型应该如何处理它们,以避免意外的错误或结果。 在如…...

【TCP为什么需要粘包和拆包】

如今,大半个互联网都建立在 TCP 协议之上,我们使用的 HTTP 协议、消息队列、存储、缓存,都需要用到 TCP 协议——这是因为 TCP 协议提供了可靠性。简单来说,可靠性就是让数据无损送达。但若是考虑到成本,就会变得非常复…...

Python | 人脸识别系统 — 姿态检测

本博客为人脸识别系统的姿态检测代码解释 人脸识别系统博客汇总:人脸识别系统-博客索引 项目GitHub地址:Su-Face-Recognition: A face recognition for user logining 注意:阅读本博客前请先参考以下博客 工具安装、环境配置:人脸…...

为什么说网络安全行业是IT行业最后的红利?

前言 2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展,一些趋势和发展可能对2023年网络安全行业产生影响: 5G技术的广泛应用:5G技术的普及将会使互联网的速度更快,同时也将带来更多的网络威胁和安全挑战。网络安全…...

谷粒商城二十四Sentinel限流熔断降级

我们在秒杀服务加的以上所有手段都是为了快,除了快之外,我们还需要保证稳定。 我们即使再快也会有一个极限值,现在假设单机下每秒处理一万个单,这已经是超高的处理能力了,秒杀服务上了五台服务器,有三台掉…...

STM32-HAL-SPI-W25Q128FV简单读写测试(2)

文章目录 一、Flash的基本读写操作1.1 向芯片中的某个地址(addr:0x02)连续写入不定长的数据并读取代码示例读写流程分析函数分析 1.2 向芯片中的某个地址(addr:0x00)写入一个数值代码示例:读写流程分析 具体的配置接上…...

网易一面:如何设计线程池?请手写一个简单线程池?

说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如极兔、有赞、希音、百度、网易的面试资格,遇到了几个很重要的面试题: 如何设计线程池? 与之类似的、其他小伙伴遇到过的问题还有: …...

网络安全之密码学

目录 密码学 定义 密码的分类 对称加密 非对称加密 对称算法与非对称算法的优缺点 最佳解决办法 --- 用非对称加密算法加密对称加密算法的密钥 非对称加密如何解决对称加密的困境 密钥传输风险 密码管理难 常见算法 对称算法 非对称算法 完整性与身份认证最佳解决…...

第14章 项目采购管理

文章目录 采购管理包括如下几个过程14.2 编制采购计划 462编制采购计划的输出1)采购管理计划2)采购工作说明书3)采购文件 14.2.3 工作说明书(SOW) 14.3 实施采购 47414.3.2 实施采购的方法和技术 476(1&…...

Vite+Vue下的多页面入口配置

我发现多页面入口配置在网上的资料比较乱,今天正好结合我们的开源API分析工具项目(APIcat)更新情况总结一下。 更新vite.config.js 主要配置的更新是在vite.config.js里面要增加build里的rollupOptions,因为vite底层使用了rollu…...

ChatGPT背后的打工人:你不干,有的是AI干

AI“出圈” 如今,数字技术发展速度惊人,AI提高了社会生产效率,更真切地冲击到原有的生产秩序。 年初AI技术的爆发,让国内看到了进一步降本增效的希望。 国内多家互联网企业相继推出类ChatGPT产品,复旦大学邱锡鹏教授…...

【Access】Access:SQL 语句汇总

目录 一、SQL 的功能 二、考试重点 三、关系的定义 (1)新建关系 (2)删除关系 四、SQL 的「数据查询」功能 (1)基本结构 ① Select 语句的基本结构 ② Select 子句 ③ Where 子句 ④ 空值的处…...

【小样本分割 2022 ECCV】SSP

文章目录 【小样本分割 2022 ECCV】SSP摘要1. 介绍2. 相关工作3. 自支持小样本语义分割3.1 动机3.2 自支持原型-SSM3.3 自适应自支持背景原型-ASBP3.4 自支持匹配-SSL 3. 代码 【小样本分割 2022 ECCV】SSP 论文题目:Self-Support Few-Shot Semantic Segmentation 中…...

Friendlycore增加inodes数量

背景:为Nanopim1安装了core系统,tf卡大小64G,安装后正常扩展到了整个tf卡,但是在安装hass的docker显示磁盘空间不够,最终发现是inode被用完了。其inode只有960K,但是16G卡树莓派系统的inodes都是其两倍。 一…...

Latex 定理和证明类环境(amsthm)和(ntheorm)的区别

最近在写毕业论文,出现了一些定理和证明的环境的问题,问题出现在对两个包的理解程度不够的问题上: \RequirePackage{ntheorem} 1、\newtheorem*{proof}{\hspace{2em}证:} 这个是让证明失去计数原则,该命令不能用于 amsthm 2…...

Yolov8改进---注意力全家桶,小目标涨点

💡💡💡💡💡💡💡💡💡💡注意力全家桶💡💡💡💡💡💡💡💡💡💡💡 基于Yolov8的注意力机制研究,提升小目标、遮挡物、难样本等检测性能...

[Linux]网络连接、资源共享

​⭐作者介绍:大二本科网络工程专业在读,持续学习Java,输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:Linux基础操作。本文主要是分享一些Linux系统常用操作,内容主要来源是学校作业,分享出来的…...

山西做网站的公司哪个好/广告开户南京seo

二维平面作图 ? 三维空间作图 ? 符号作图 ? Matlab 绘图过程/原理 2 手工作图如何画出 数学软件 Matlab —— 二维平面作图 —— 三维空间作图 1 本讲主要内容......是通过描点、连线来实现的,故在 画一个曲线图形之前,必须先取得该图形上的 一系列的点的坐标(即横坐标和纵坐…...

网站设计需要用到什么技术/镇江网站建设推广

备份数据库:mysqldump -u用户名 -p密码 数据库 > /Dir/sql.bak 备份表:mysqldump -u用户名 -p密码 数据库 表 > /Dir/biao.bak 备份字段: select * from admin > /Dir/ziduan.txt 备份网站: Rar a wangzhan.rar /打包目录/ 转载于:…...

网站设计制作排名/代做百度首页排名

游标的概念: 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据…...

要点营销网站/seo优化常识

https://www.cnblogs.com/niuben/p/12558841.html...

网站制作及管理教程/百度关键词排名神器

Golang 效率初(粗)测从接触 Golang 开始,断断续续已有差不多一年左右的时间了,都是业余自己学学看看,尚主要限于语法及语言特性,还没有用它写过实际的项目. 关于 Golang 的语法及语言特性,网上有很多资源可以学习 ...Odoo10尝鲜:制造Odoo10主要是对 MRP 进行重构, 增…...

英文网站建设 江门/百度搜索关键词热度

我安装的是Ubuntu18.04系统,每次双击sh文件都是用vim,我还得切换到命令行去执行;这就有点不方便了。 解决办法:点击Preferences设置 切换到Behavior,选择Run them 最后到这个需要执行的文件属性里去,勾选Allow executing file as …...