C#学习笔记_变量、数据类型、数据类型转换

变量

一、概念

变量是用于在计算机的内存中存储数据。

二、语法

  1. 声明变量:数据类型 变量名; 
  2. 变量赋值:变量名 = 表达式;
  3. 使用变量:变量名

具体可见以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//引用命名空间
namespace _2024_1_25    //项目名或命名空间
{class Program   //Program类{static void Main(string[] args) //Main函数是程序主入口{int score;  //声明变量score = 17; //变量赋值Console.WriteLine(score);   //使用变量,此处输出score值Console.ReadKey();}}
}
//输出内容:17

此外,也可以直接将变量声明与赋值操作同时进行。例如上面声明与赋值,直接简化为一行代码:

int score = 17;

两种代码功能相同。

三、使用规则

变量必须先声明,再赋值,最后才能使用,前面步骤缺一不可。

四、命名规则

  1. 必须使用字母、下划线_、@符号开头,不能用数字作为变量名开头;
  2. 变量名区分大小写;
  3. 变量名不允许使用C#中关键字名;
  4. 同一变量名不允许重复定义;
  5. 建议使用驼峰命名法,即变量名单词中,首个单词全部小写,其他单词首字母使用大写。

常见数据类型

一、int类型

int类型为整数类型,只能存数整数,不能存储浮点数。int类型取值范围为-2 147 483 648到2 147 483 647。

二、float类型

float类型为双精度浮点数类型,可以存储整数与浮点数,存储浮点数需要在数字后添加f。float类型存储精度为小数点后7位。

三、double类型

double类型为双精度浮点数类型,可以存储整数与浮点数,存储浮点数不需要在数字后添加f。double类型存储精度为小数点后15~16位。

四、bool类型

bool类型为布尔类型,仅存储true与false,用于逻辑判断。

五、string类型

string类型为字符串类型,用于存储字符串,字符串两边需要双引号。

六、char类型

char类型为字符类型,用于存储一个字符,字符两边需要单引号。字符串中可以存空字符串,但字符不能存储空。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//引用命名空间
namespace _2024_1_25    //项目名或命名空间
{class Program   //Program类{static void Main(string[] args) //Main函数是程序主入口{int intType = 100;/*int类型为整数类型,只能存数整数,不能存储浮点数。int类型取值范围为-2 147 483 648到2 147 483 647*/float floatTypeA = 1.00f;float floatTypeB = 100;/*float类型为双精度浮点数类型,可以存储整数与浮点数,存储浮点数需要在数字后添加f。float类型存储精度为小数点后7位。*/double doubleTypeA = 3.141592653;double doubleTypeB = 100;/*double类型为双精度浮点数类型,可以存储整数与浮点数,存储浮点数不需要在数字后添加f。double类型存储精度为小数点后15~16位。*/bool boolType = true;/*bool类型为布尔类型,仅存储true与false,用于逻辑判断。*/string gameName = "PVZ_BT";/*string类型为字符串类型,用于存储字符串,字符串两边需要双引号。*/char charType = 'a';/*char类型为字符类型,用于存储一个字符,字符两边需要单引号。字符串中可以存空字符串,但字符不能存储空。*/}}
}

数据类型转换

一、隐式类型转换

隐式转换是指将一个较小范围的数据类型转换为较大范围的数据类型时,编译器会自动完成类型转换,这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。

例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。将一个 byte 类型的变量赋值给 int 类型的变量,编译器会自动将 byte 类型转换为 int 类型,不需要显示转换。

将一个整数赋值给一个长整数,或者将一个浮点数赋值给一个双精度浮点数,这种转换不会导致数据丢失。

byte b = 10;
int i = b; // 隐式转换,不需要显式转换
int intValue = 42;
long longValue = intValue; // 隐式转换,从 int 到 long

二、显式类型转换(强制类型转换)

显式类型转换,即强制类型转换。

显式转换是指将一个较大范围的数据类型转换为较小范围的数据类型时,或者将一个对象类型转换为另一个对象类型时,需要使用强制类型转换符号进行显示转换,强制转换可能会造成数据丢失。

int i = 10;
byte b = (byte)i; // 显式转换,需要使用强制类型转换符号
double doubleValue = 3.14;
int intValueA = (int)doubleValue; // 强制从 double 到 int,数据可能损失小数部分
int intValueB = 42;
float floatValue = (float)intValueB; // 强制从 int 到 float,数据可能损失精度
int intValueC = 123;
string stringValue = intValueC.ToString(); // 将 int 转换为字符串

下面是一个强制类型转换的实例:

using System;namespace TypeConversionApplication
{class ExplicitConversion{static void Main(string[] args){double d = 5673.74;int i;// 强制转换 double 为 inti = (int)d;Console.WriteLine(i);Console.ReadKey();}}
}

程序最终会输出:

5673

三、Convert类型转换方法

上面两种类型转换方法都只适用于相兼容类型的类型转换,而对于获取不兼容类型,例如将字符串转换为int型数据,就需要使用Convert类型转换方法。常见Convert类型转换方法如下:

  1. ToBoolean:如果可能的话,把类型转换为布尔型。
  2. ToByte:把类型转换为字节类型。
  3. ToChar:如果可能的话,把类型转换为单个 Unicode 字符类型。
  4. ToDouble:把类型转换为双精度浮点型。
  5. ToSingle:把bool类型或字符串类型转换为单精度浮点数类型。
  6. ToInt16/ToInt32/ToInt64:把类型转换为 16/32/64 位整数类型。
  7. ToUInt16/ToUInt32/ToUInt64:把类型转换为 16/32/64 位无符号整数类型。
  8. ToString:把类型转换为字符串类型。

下面是一个Convert类型转换实例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//引用命名空间
namespace _2024_1_25    //项目名或命名空间
{class Program   //Program类{static void Main(string[] args) //Main函数是程序主入口{double pi = 3.141592654;Console.WriteLine(pi);float piFloat = Convert.ToSingle("2.14") + 1;Console.WriteLine(piFloat);Console.ReadKey();}}
}

最终输出:

3.141592654

3.14

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习:开源BERT】 用于自然语言处理的最先进的预训练

【深度学习:开源BERT】 用于自然语言处理的最先进的预训练 是什么让 BERT 与众不同?双向性的优势使用云 TPU 进行训练BERT 结果让 BERT 为您所用 自然语言处理 (NLP) 面临的最大挑战之一是训练数据的短缺。由于 NLP 是一个具有许多…

C#学习(十一)——Array和Collection

一、集合 集合重要且常用 孤立的数据是没有意义的,集合可以作为大量数据的处理,可进行数据的搜索、迭代、添加、删除。 C#中,所有集合都必须实现ICollection接口(数组Array除外) 集合说明Array数组,固定长…

【GitHub项目推荐--基于 AI 的口语训练平台】【转载】

Polyglot Polyglot 是一个开源的基于 AI 的口语训练平台客户端,可以在 Windows、Mac 上使用。 比如你想练习英语口语,只需在该平台配置一个虚拟的 AI 国外好友,你可以通过发语音的方式和 AI 好友交流,通过聊天的方式提升你的口…

中仕教育:事业单位考试考什么?

事业单位考试分为两个阶段,分别是笔试和面试,考试科目包括公共科目和专业科目两部分。 公共科目内容是公共基础知识、职业能力测试或申论。一种形式为:公共基础知识职业能力测试或职业能力测试申论。另一种形式为:公共基础申论。…

c语言基础6

1.逗号表达式 逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后⼀个表达式的结果。 我们来看下面的一个代码: int main() {int a 1;int b 2;int ret (a > b, a b 2, b, b a 1);p…

Nginx实现反向代理负载均衡实验

实验环境: VM REdhat虚拟机(192.168.87.5)一台、VM Redhat虚拟机(192.168.87.3)一台、阿里云服务器(47.93.79.92)一台 实验要求:通过windows浏览器访问192.168.87.5(虚…

通信协议的TCP/IP模型

昨天因为有事情,就没更新因特网模型协议栈( The Internet protocol stack), 也有地方叫 TCP/IP协议套件(TCP/IP protocol suite),该协议栈目前能找到的最早记录在由五层组成:物理层(Physical Layer)、 链路层(Link Layer)、网络层…

《合成孔径雷达成像算法与实现》Figure5.19

clc clear close all距离向参数 R_eta_c 20e3; % 景中心斜距 Tr 25e-6; % 发射脉冲时宽 Kr 0.25e12; % 距离向调频率 Fr 7.5e6; % 距离向采样率 Nrg 256; % 距离线采样点数 Bw abs(Kr*Tr); …

仰暮计划|“她就是用她的一双小脚把我们兄弟姐妹几个拉扯大的”

在残存的一些老物件中,在一些泛黄的相片中,掩藏着岁月的冲刷和青葱的时光。曾经无忧无虑的少女早已白发苍苍,不复青春貌美;曾经在父母面前笑闹的孩子早已变成他人眼中的长辈。 ——题记 她的身影也许并不高大,甚至还略…

Linux编辑器vim(含vim的配置)

文章目录 前言vim的基本概念vim基本操作进入vim模式切换退出vim vim指令vim命令模式指令vim底行模式命令 简单vim配置 前言 本篇文章,小编将介绍Linux编辑器–>vim以及vim的配置。 vim的基本概念 正常/普通/命令模式(Normal mode) 控制屏幕光标的移动&#xf…

Gin 框架之jwt 介绍与基本使用

文章目录 一.JWT 介绍二.JWT认证与session认证的区别2.1 基于session认证流程图2.2 基于jwt认证流程图 三. JWT 的构成3.1 header : 头部3.2 payload : 负载3.2.1 标准中注册的声明 (建议但不强制使用)3.2.2 公共的声明3.2.3 私有的声明3.2.4 定义一个payload 3.3 signatrue : …

【计算机网络】概述|分层体系结构|OSI参考模型|TCP/IP参考模型|网络协议、层次、接口

目录 一、思维导图 二、计算机网络概述 1.计算机网络定义、组成、功能 2.计算机网络分类 3.计算机网络发展历史 (1)计算机网络发展历史1:ARPANET->互联网 (2)计算机网络发展历史2:三级结构因特网 …

jenkins对接K8S

创建连接K8S的凭据 查看需要使用到的命名空间 [rootk8s ~]# kubectl get ns |grep arts-system arts-system Active 16d创建service accounts [rootk8s ~]# kubectl create sa jenkins-k8s -n arts-system serviceaccount/jenkins-k8s created [rootk8s ~]# kubectl…

一键批量处理,轻松为HTML文本添加所需内容

你是否曾经遇到过需要批量处理大量HTML文本的情况?是否曾经因为一个个编辑而感到繁琐和无趣?现在,这些问题都可以得到轻松解决!我们的文本批量处理工具,为你提供一站式的服务,让你告别重复繁琐的操作&#…

java eazyexcel 实现excel的动态多级联动下拉列表(2)使用MATCH+OFFSET函数

原理 同样是将数据源放到一个新建的隐藏的sheet中,第一行是第一个列表的数据,第二行是每一个有下级菜单的菜单,他下面的行就是他下级菜单的每一值使用MATCH函数从第二行找到上级菜单对应的列根据OFFSET函数从2中获取的列,取得下级…

深度学习之处理多维特征的输入

我们首先来看一个糖尿病的数据集: 在数据集中,我们称每一行叫做sample,表示一个样本,称每一列是feature,也就是特征在数据库里面这就是一个关系表,每一行叫做记录,每一列叫做字段。 每一个样本都…

2024年第一篇博客

这是2024年的第一篇博客,2023年笔者经历了一连串的生活、工作、学习上的转折和调整,跌跌撞撞时光飞逝,转眼间就踏着元旦的钟声步入了2024年,前思后想、辗转反侧、犹豫再三不知道从哪里开始博客新的篇章,这个问题坦诚说…

ARL灯塔vps云服务器安装

前提是vps服务器已经安装好docker 1、下载压缩包到本地 2、解除不能扫描edu等域名的限制 解压docker_arl.zip,打开docker_arl/config-docker.yaml文件 删除掉edu.cn等限制域名(图中已删除) 3、上传至vps云服务器 将docker_arl文件上传到云服务器opt目录下 这里我…

使用Pinctrl 和 Gpio 子系统 配置引脚

1. 关于Pinctrl 和 GPIO 子系统 1.1 Pinctrl 子系统 Pinctrl 子系统 主要负责处理SOC(System on chip )的引脚控制,现代MCU中很多引脚 都是多功能的,可以配置成不同的角色(GPIO,I2C,SPI,UART,PWM等) Pinctrl 子系统就是用来管理…

【智能家居】6、语音控制及网络控制代码实现

一、语音控制 1、指令结构体编写 这个结构体定义了一个命令输入的模型。在这个模型中,包含以下几个部分: cmdName:一个长度为128的字符串,用于存储命令名称。dvicesName:一个长度为128的字符串,用于存储设备名称。cmd:一个长度为32的字符串,用于存储具体的命令。Init:…