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

【C#基础】C# 变量与常量的使用

序号系列文章
1【C#基础】C# 程序通用结构
2【C#基础】C# 基础语法解析
3【C#基础】C# 数据类型总结

文章目录

  • 前言
  • 一. 变量(variable)
    • 1,变量定义及初始化
    • 2,变量的类别
    • 3,接收输出变量
  • 二. 常量(constant)
    • 1,常量的定义及初始化
    • 2,常见的常量类型
  • 结语

前言

😄大家好,我是writer桑,前面一章已经学习了 C# 的数据类型,那本章就开始学习C# 程序中变量与常量的使用,希望看完大家能够有所收获,感谢支持!


一. 变量(variable)

变量用来存储信息,而变量名就是一个供程序操作存储区的名字。每个变量都有一个特定的类型,类型决定了变量内存的大小和布局, 变量的值存储在内存中,在允许的范围内可以对变量进行一系列的操作。

1,变量定义及初始化

C# 变量定义的语法: <data_type> <variable_name>;

  • data_type 也即变量的类型,这里必须是一个合法的 C# 数据类型 。
  • variable_name 表示变量名称,通过赋值将数据和可描述的变量名连接起来,同时变量的声明必须是有效的 C# 标识符。

一些有效的变量定义示例代码:

// 整数、字符、浮点数、字符串类型的定义; 
int i, j, k;    
char c, ch;     
float f, salary;    
string s;

变量初始化赋值语法:<data_type> <variable_name> = value;

  • 其中 value 表示常量表达式,使用等号将初始值和变量名连接
  • 对于在获取变量的值之前,都需要对该变量进行明确赋值,输出未赋值的变量时编译器会报错误。
  • 变量在定义时分为初始赋值或者初始未赋值,笔者建议声明变量时进行赋值,详细的理由请查看第12条建议;

我们可以在变量定义时进行初始化:

// 定义变量并初始化 
int i = 11; 
char c = 'A';
float f = 1.1f;
string s = "hello,world"; 

2,变量的类别

C # 定义了七种类型的变量:静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量。 下面分别介绍其中每个类别。

代码理解:

class Example
{public static int x;int y;void ExampleMethod(int[] v, int a, ref int b, out int c){int i = 1;c = a + b++;}
}

x 是静态变量, y 是实例变量, v[0] 是数组元素,a 是值参数, b 是引用参数,c 是输出参数, i 是局部变量。

静态变量:

在 C# 程序中使用 static 关键字声明的字段为静态变量,静态变量它不需要实例化对象来引用,可以直接使用类名来引用。静态变量的默认值是变量类型的默认值0, 同时静态变量随着所属应用程序的结束而停止存在。

实例变量:

没有用 static 关键字声明的字段为实例变量,与静态变量不同的是实例变量它必须创建类对象才可以通过对象来引用变量。同时实例变量的初始值为变量类型的默认值0。

数组元素:

一组具有同一属性的数据就称为数组,是最常见的数据结构之一。当创建数组实例时,数组的元素就已存在, 数组元素初始值都是默认值0。在没有对该数组实例的引用时停止存在;

值参数:

没有使用 ref 或 out 关键字修饰的参数为值参数, 值参数所属的函数成员 (方法、实例构造函数、访问器或运算符) 或匿名函数在开始调用时而存在并进行初始化值,当函数成员或匿名函数返回时值参数就停止存在。

引用参数:

使用修饰符 ref 声明的参数为引用参数,引用参数不会创建新的存储空间,相反,引用参数与所属函数成员或匿名函数调用中的参数的变量表示相同的存储位置。

输出参数:

使用修饰符 out 声明的参数为输出参数, 同样输出参数不会创建新的存储空间, 相反,输出参数与函数成员或委托调用中的参数有着相同存储位置。 因此,输出参数的值始终与基础变量相同。

局部变量:

顾名思义局部变量就是只在局部的“代码块”内有效的变量,局部变量经常出现在 for 语句、if 语句或 using 语句等等。局部变量的生存期是程序执行的一部分,实际生存期取决于程序的具体实现。

3,接收输出变量

在 C# 程序中可以使用 System 命名空间中 Console 类的 Readline 方法 和 WriteLine 方法实现接收变量并输出。

  • Readline 方法用于接收用户输入的一行数据并转换为 string 字符串类型输出
  • WriteLine 方法将指定的 value 参数变量输出

以下面程序的实现为示例:

using System;class Program
{static void Main(string[] args){Console.WriteLine("请问您喜欢什么编程语言?");string language = Console.ReadLine();Console.WriteLine($"我也喜欢用{language}");	// 我也喜欢用C#Console.ReadKey();}
}

二. 常量(constant)

常量是不可变的值,在编译时是已知的,在程序的生命周期内不会改变。 常量使用 const 修饰符声明。 仅 C# 内置类型(不包括 System.Object)可声明为 const。 用户定义的类型(包括类、结构和数组)不能为 const。 同时也可以使用 readonly 修饰符创建在运行时一次性(例如在构造函数中)初始化的类、结构或数组,此后不能更改。

1,常量的定义及初始化

常量定义的语法: const <data_type> <constant_name> = value;readonly <data_type> <constant_name> = value;

  • 与变量不同,常量在声明时必须初始化赋值
  • data_type 表示数据类型,constant_name 表示常量名称, value 表示常量表达式
  • C# 程序中常量分为编译期的常量 const 和运行期的常量 readonly
  • 笔者建议优先考虑 readonly 关键字来声明常量,详细的理由请查看第2条建议

如何在 C# 中定义常量示例程序:

static class Constants
{public const double Pi = 3.14159;public const int SpeedOfLight = 300000; 
}class Program
{static void Main(){double radius = 5.3;double area = Constants.Pi * (radius * radius);int secsFromSun = 149476000 / Constants.SpeedOfLight; Console.WriteLine(secsFromSun);		// 498}
} 
  • 通常使用常量为特殊值且提供有意义的名称, 比如 Pi 和 SpeedOfLight 等常量。
  • 常量的输出与变量相同, 使用 Console 类的 WriteLine 方法。
  • 使用类名限定符 (示例代码的 static) 有助于确保你和使用该常量的其他人了解它是常量,并且不能通过实例化对象来修改。 (提高可读性)

2,常见的常量类型

整数常量:

整数常量可以是十进制、二进制、八进制或十六进制的常量, 其中前缀的使用:

  • 十进制:不使用任何前缀(可以使用U 和 L 分别表示 unsigned 和 long)
  • 二进制:使用 0b 或 0B 前缀
  • 八进制: 使用 0 前缀
  • 十六进制:使用 0x 或 0X 前缀

四种进制的代码示例:

const int decimalLiteral = 42;    // 十进制
const int binaryLiteral = 0b_0010_1010;   // 二进制
const int octalLiteral = 0213;    // 八进制
const int hexLiteral = 0x2A;      // 十六进制  

浮点数常量:

使用浮点数常量必须包含小数点、指数或同时包含两者。使用指数形式必须包含整数部分、小数部分或同时包含两者。有符号的指数是用 e 或 E 表示的。 浮点常量通常用来表示时间、日期等需要精确到小数点后几位的结果,且结果不能修改。

一些浮点常量的实例:

const float time = 11.11f;    
const float price = 9.99f;    
const double data = 11.11;    
const double pi = 3.1415926;

字符常量:

字符常量是指用一对单引号括起来的一个字符,如’a’,‘9’,字符常量中的单引号只起定界作用并不表示字符本身。 在 C# 程序中字符常量的主要表示有普通字符 ‘b’、转义序列 ‘\t’、通用字符 ‘\u02C0’。

列举C# 中字符串转义序列:

转义序列字符名称Unicode 编码
\’单引号0x0027
\"双引号0x0022
\\反斜杠0x005C
\0null0x0000
\a警报0x0007
\bBackspace0x0008
\f换页0x000C
\n换行0x000A
\r回车0x000D
\t水平制表符0x0009
\v垂直制表符0x000B
\uUnicode 转义序列 (UTF-16)\uHHHH(范围:0000 - FFFF;示例:\u00E7 =“ç”)
\UUnicode 转义序列 (UTF-32)\U00HHHHHH(范围:000000 - 10FFFF;示例:\U0001F47D = “👽”)
\x除长度可变外,Unicode 转义序列与“\u”类似\xH[H][H][H](范围:0 - FFFF;示例:\x00E7、\x0E7 或 \xE7 =“ç”

使用字符常量转义序列的示例

class Program
{static void Main(){Console.WriteLine("Hello,\t\n world");Console.ReadLine();}
} 

字符串常量:

字符串常量是一对双引号括起来的字符序列,与字符常量不同的地方在于表达形式、含义和内存。字符串常量的声明是括在双引号“”里,或者使用@“” 表示取消字符串中的转义符 。字符串常量常用于用户程序输入信息、 程序向用户显示信息等。

各种形式的字符串常量实现:

const string str0 = "hello, C#";                  // hello, C#
const string str1 = @"hello, C#";               // hello, C#
const string str2 = "hello \t C#";               // hello     C#
const string str3 = @"hello \t C#";               // hello \t C#
const string str4 = "Joe said \"Hello\" to me";      // Joe said "Hello" to me
const string str5 = @"Joe said ""Hello"" to me";   // Joe said "Hello" to me
const string str6 = "\\\\server\\share\\file.txt";   // \\server\share\file.txt
const string str7 = @"\\server\share\file.txt";      // \\server\share\file.txt
const string str8 = "one\r\ntwo\r\nthree";
const string str9 = @"onetwothree";
  • 即使表达形式不同,但是表示的都是相同的字符串常量
  • 声明字符串时可以使用换行和空格

结语

✔️ 以上就是对 C# 程序中变量与常量的使用,希望能够对大家有所帮助。望大家多多支持,你们的支持就是笔者创作最大的动力!

相关文章:

【C#基础】C# 变量与常量的使用

序号系列文章1【C#基础】C# 程序通用结构2【C#基础】C# 基础语法解析3【C#基础】C# 数据类型总结文章目录前言一. 变量&#xff08;variable&#xff09;1&#xff0c;变量定义及初始化2&#xff0c;变量的类别3&#xff0c;接收输出变量二. 常量&#xff08;constant&#xff…...

[ 常用工具篇 ] CobaltStrike(CS神器)基础(一) -- 安装及设置监听器详解

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

Redis集群

Redis集群 本章是基于CentOS7下的Redis集群教程&#xff0c;包括&#xff1a; 单机安装RedisRedis主从Redis分片集群 1.单机安装Redis 首先需要安装Redis所需要的依赖&#xff1a; yum install -y gcc tcl然后将课前资料提供的Redis安装包上传到虚拟机的任意目录&#xff…...

00---C++入门

1. C关键字(C98) C总计63个关键字&#xff0c;C语言32个关键字 2. 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进…...

Spring-事务2

文章目录前言一、事务的特性&#xff08;ACID&#xff09;二、事务的隔离级别三、spring中的事务平台事务管理器.事务定义ISOLation_XXX&#xff1a;**事务隔离级别.**PROPAGATION_XXX&#xff1a;**事务的传播行为**.事务状态关系&#xff1a;四、使用XML文件配置事务1、 搭建…...

Windows Git Bash 配置

Windows Git Bash 配置 本文参考的文章&#xff1a; 在 Windows 的 Git Bash 中使用包管理器 - iris (ginshio.org)Git bash 安装 pacman & Windows 解压 zst 文件 | 伪斜杠青年 (lckiss.com) 一、Git的安装 Git 的安装应该是都会的&#xff0c;但还是应该说以下&#…...

java代码整合kettle9.3实现读取表中的数据,生成excel文件

java代码整合kettle9.3实现读取表中的数据&#xff0c;生成excel文件 1.简介 本次使用java代码整合kettle9.3版本&#xff0c;数据库使用mysql。 2.jar包导入 项目需要依赖部分kettle中的jar包&#xff0c;请将这部分jar包自行导入maven仓库。 <dependency><groupId…...

分享微信点餐小程序搭建步骤_微信点餐功能怎么做

线下餐饮实体店都开始摸索发展网上订餐服务。最多人选择的是入驻外卖平台&#xff0c;但抽成高&#xff0c;推广还要另买流量等问题&#xff0c;也让不少商家入不敷出。在这种情况下&#xff0c;建立自己的微信订餐小程序&#xff0c;做自己的私域流量是另一种捷径。那么&#…...

4、数组、切片、map、channel

目录一、数组二、切片三、map四、channel五、引用类型一、数组 数组&#xff1a; 数组是块连续的内存空间&#xff0c;在声明的时候必须指定长度&#xff0c;且长度不能改变所以数组在声明的时候就可以把内存空间分配好&#xff0c;并赋上默认值&#xff0c;即完成了初始化数组…...

270 uuid

270 uuid 用途 For the creation of RFC4122 UUIDs 可靠性 10000 星星 适应于浏览器或者服务器 官网链接 https://www.npmjs.com/package/uuid https://github.com/uuidjs/uuid 基本使用 import { v4 as uuidv4 } from uuid; uuidv4(); // ⇨ 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3d…...

2023最新简历模板免费下载

下面分享5个简历模板网站&#xff0c;免费下载&#xff0c;建议收藏&#xff01; 2023用最漂亮的简历模板&#xff0c;让面试官眼前一亮。 1、菜鸟图库 个人简历模板|WORD文档模板免费下载 - 菜鸟图库 菜鸟图库除了有超多设计类素材之外&#xff0c;还有很多办公类素材&#…...

【CSS】元素居中总结-水平居中、垂直居中、水平垂直居中

【CSS】元素居中一、 水平居中1.行内元素水平居中&#xff08;1&#xff09;text-align2.块级元素水平居中2.1 margin&#xff08;1&#xff09;margin2.2布局&#xff08;1&#xff09;flex justify-content&#xff08;推荐&#xff09;&#xff08;2&#xff09; flexmargin…...

spring实现AOP

文章目录前言一、AOP的底层实现原理二、AOP的两种开发模式1.使用xml配置文件1.1 添加AOP依赖1.2 创建UserService1.3创建UserServiceImpl1.4创建通知类1.5 创建applicationContext.xml&#xff08;添加aop约束&#xff09;1.6 测试2.使用注解开发2.1 创建bean.xml文件配置注解方…...

neovim搭建cpp环境

文章目录Windowns下NeoVim搭建cpp环境NeoVim安装插件vim-plugindentLinevim-airlinectagstagbarcoc.vimWindowns下NeoVim搭建cpp环境 在开发过程中习惯在DIE环境中使用vim作为编辑器&#xff0c;在单独的编辑器也常使用gvim图形化编辑器。最近看到NeoVim的特性及兼容性方面不输…...

SpringBoot AES加密 PKCS7Padding 模式

AES 简介&#xff1a;DES 全称为Data Encryption Standard&#xff0c;即数据加密标准&#xff0c;是一种使用密钥加密的块算法&#xff0c;1977年被美国联邦政府的国家标准局确定为联邦资料处理标准&#xff08;FIPS&#xff09; AES 密码学中的高级加密标准&#xff08;Advan…...

按键输入驱动

目录 一、硬件原理 二、添加设备树 1、创建pinctrl 2、创建节点 3、检查 编译复制 三、修改工程模板​编辑 四、驱动编写 1、添加keyio函数 2、添加调用 3、驱动出口函数添加释放 4、添加原子操作 5、添加两个宏定义 6、初始化原始变量 7、打开操作 8、读操作 总体代…...

2023年第七周总周结 | 开学倒数第三周

为什么要做周总结&#xff1f; 1.避免跳相似的坑 2.客观了解上周学习进度并反思&#xff0c;制定可完成的下周规划 一、上周问题解决情况 晚上熬夜导致第二天学习状态不好 这周熬夜一天&#xff0c;晚上帮亲戚修手机到22:30&#xff0c;可能是晚上自己的事什么都没做&#xff…...

Springboot扫描注解类

Springboot扫描注解类的入口在AbstractApplicationContext的refresh中&#xff0c;对启动步骤不太了解的&#xff0c;可参考https://blog.csdn.net/leadseczgw01/article/details/128930925BeanDefinitionRegistryPostProcessor接口有多个实现类&#xff0c;扫描Controller、Se…...

Apache日志分析器

您的Apache HTTP服务器生成的日志数据是信息的宝库。使用这些信息&#xff0c;您可以判断您服务器的使用情况、找出漏洞所在&#xff0c;并设法改进服务器结构和整体性能。审核您的Apache日志可在以下情况派上用场&#xff0c;其中包括&#xff1a;识别和纠正频繁出现的错误以增…...

啪,还敢抛出异常

&#x1f649; 作者简介&#xff1a; 全栈领域新星创作者 &#xff1b;天天被业务折腾得死去活来的同时依然保有对各项技术热忱的追求&#xff0c;把分享变成一种习惯&#xff0c;再小的帆也能远航。 &#x1f3e1; 个人主页&#xff1a;xiezhr的个人主页 前言 去年又重新刷了…...

Apache JMeter 5.5 下载安装以及设置中文教程

Apache JMeter 5.5 下载安装以及设置中文教程JMeter下载Apache JMeter 5.5配置环境变量查看配置JDK配置JMeter环境变量运行JMeter配置中文版一次性永久设置正文JMeter 下载Apache JMeter 5.5 官方网站&#xff1a;Apache JMeter 官网 版本介绍&#xff1a; 版本中一个是Bina…...

string类模拟实现

了解过string常用接口后&#xff0c;接下来的任务就是模拟实现string类。 目录 VS下的string结构 默认成员函数和简单接口 string结构 c_str()、size()、capacity()、clear()、swap() 构造函数 拷贝构造函数 赋值重载 析构函数 访问及遍历 容量操作 reserve resize …...

cadence SPB17.4 S032 - allegro - 保存/载入光绘层定义

文章目录cadence SPB17.4 S032 - allegro - 保存/载入光绘层定义概述保存光绘层在新板子中载入已经保存的相同类型老板子定义好的光绘层定义文件碎碎念ENDcadence SPB17.4 S032 - allegro - 保存/载入光绘层定义 概述 以前布线完成, 准备出板厂文件时, 总是要手工重新建立光绘…...

微服务实战--高级篇:分布式缓存 Redis

分布式缓存 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题&#xff1a; 1.Redis持久化 Redis有两种持久化方案&#xff1a; RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;&#xf…...

【C语言】可变参数列表

本篇博客让我们来认识一下C语言学习过程中往往被忽略的可变参数列表 所谓可变参数&#xff0c;就是一个不限定参数数量的函数&#xff0c;我们可以往里面传入任意个数的参数&#xff0c;以达成某些目的。 关联&#xff1a;C11可变模板参数&#xff1b;本文首发于 慕雪的寒舍 …...

目标检测的旋框框文献学习

这是最近打算看完的文献&#xff0c;一天一篇 接下来将记录一下文献阅读笔记&#xff0c;避免过两天就忘了 RRPN 论文题目&#xff1a;Arbitrary-Oriented Scene Text Detection via Rotation Proposals 论文题目&#xff1a;通过旋转方案进行任意方向的场景文本检测&#x…...

Hive 在工作中的调优总结

总结了一下在以往工作中&#xff0c;对于Hive SQL调优的一些实际应用&#xff0c;是日常积累的一些优化技巧&#xff0c;如有出入&#xff0c;欢迎在评论区留言探讨~ EXPLAIN 查看执行计划 建表优化 分区 分区表基本操作&#xff0c;partitioned二级分区动态分区 分桶 分…...

每天一道大厂SQL题【Day09】充值日志SQL实战

每天一道大厂SQL题【Day09】充值日志SQL实战 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&#…...

MATLAB 遗传算法

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…...

探讨 Java 中 valueOf 和 parseInt 的区别

前言 在编程中&#xff0c;遇到类型转换&#xff0c;好像会经常用到 parseInt 和 valueOf&#xff0c;当然这里只拿 Integer 类型进行陈述&#xff0c;其他类型也是雷同的&#xff1b; 想必有读者也跟我一样&#xff0c;经常交叉使用这两个方法&#xff0c;但却不知道这两者到…...

坑梓网站建设/竞价账户托管公司

问题&#xff1a; 项目运行时出现未能找到路径“……\bin\roslyn\csc.exe”。 运行截图&#xff1a; 描述&#xff1a; 有时在我们做项目时或者从SVN上拉取项目运行后&#xff0c;会出现未能找到路径“……\bin\roslyn\csc.exe”的错误。这是因为我们在生成项目的时候VS并没有在…...

建设德育网站的意义/广告推广系统

转载于:https://blog.51cto.com/ceshi/167991...

wordpress 下载官网/深圳百度竞价托管公司

我有2个进程在不同的机器上运行,它们通过TCP套接字进行通信.这两个进程都具有既充当服务器又充当客户端的代码.即ProcessA打开了一个服务器套接字,它在portX上绑定,ProcessB在portY上打开了一个服务器套接字绑定.ProcessA打开客户端套接字以连接ProcessB并开始作为客户端发送消…...

做网站数据存在哪里/百度推广登录平台官网

1. 说明本篇文章主要说一下应用测评中身份鉴别控制点中b、c、d测评项的相关知识点和理解&#xff0c;以及高风险判定方面的内容。注&#xff1a;下文的应用系统不特别指都就默认为属于B/S架构。2. 测评项b)应具有登录失败处理功能&#xff0c;应配置并启用结束会话、限制非法登…...

wordpress成品网站云部落/友情链接格式

Mac安装brew 软件包管理工具HomebrewHomebrew安装Homebrew基本命令Homebrew是一款Mac OS下的软件包管理工具&#xff0c;具备安装、卸载、更新、查看、搜索等很多实用功能。一条指令就可实现包管理&#xff0c;而无需考虑各种依赖和文件路径等情况&#xff0c;十分方便快捷。Ho…...

wordpress 手机模版/线上推广宣传方式有哪些

Sublime Text 3与Sublime Text 2的不同 其实有不少人写过如何让Sublime Text 2支持GB2312和GBK编码&#xff0c;例如这篇。基本原理就是先装好Package Control&#xff0c;然后再通过这个安装ConvertToUTF8的Package。 但是文中的方法在Sublime Text 3时代行不通了&#xff0c;…...