2.3 变量

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

变量是用来存放某个值的数据,它可以表示一个数字、一个字符串、一个结构、一个类等。变量包含名称、类型和值。在代码中,变量的值是可以改变的。

2.3.1 声明一个变量

通常情况下变量应先声明再使用。

在C#中常常采用以下语法声明变量:

变量类型 变量名称;

例如:

string strName;

这里声明了一个string(字符串类型)的变量strName。

VB.Net通常使用:

Dim变量名称As变量类型

来声明一个变量。

相对于VB.Net,C#的声明更简略。

多个同类型变量的定义可以使用以下语句:

变量类型 变量名称1, 变量名称2;

变量之间使用,(英文逗号)隔开,例如:

string strName, strGender;

对于上述进行了类型声明的变量,一般称为显式类型变量,通过var关键字来声明变量,也可以不指明变量类型,例如:

var strName="Name";

编译器会为从=运算符右侧表达式推断出变量的类型。

相对而言,Vb.Net使用

Dim strName

赋予strName一个默认的变量类型:Object,当代码运行时,再根据实际赋予相应的类型。

注意:使用var来声明变量一般称为隐式类型变量,必须在声明时初始化。

【例 2.5【项目:code2-005】使用未声明的代码。

        static void Main(string[] args)

        {

            var strName= "XiaoMing";

            Console.WriteLine(strName);

            Console.ReadKey();

    }

如果使用var声明的时候没有赋初始值,那么编辑器会提示错误。

图2-5 编辑器将未初始化的声明标注为错误

为了让阅读代码的人更清楚地理解变量,应该声明变量后再使用。

2.3.2 变量的赋值

通常变量声明后通过=(等于号)来赋值,例如:

strName=" XiaoMing ";

这里将“XiaoMing”这个字符串值赋给了strName,在以后的代码中出现的strName其实就是“XiaoMing”。注意:与VB.Net不同,C#里面=只能是赋值符号,不是判断相等的运算符,判断是否相等应该使用==(两个等号)。

那么也可以在声明变量的时候就赋予变量一个初始值,例如:

string strName= "XiaoMing";

注意:可以多个同类型变量的声明的同时使用赋值,例如以下代码:

string strName, strGender = "XiaoMing";

但只赋值给最后一个变量。

2.3.3 变量名称规则

变量名称通常由数字、字母和下划线组成且第一个字符不能为数字,不能使用系统的关键字(如:for、string等等)作为变量名称。不过请放心的是,如果不小心使用了关键字,VS会提醒的。

网上对于变量的命名有很多看法,通常情况下使用

简化的类型名称+变量的含义

例如上面的strName,str是类型String的简化,相应的int是Integer的简化等;Name是汉字姓名的英语单词。Str+Name合在一起表示这个变量定义的是某个人的姓名,同时也反映了这个变量是一个字符串类型。

通常类型名称小写,变量含义的单词首字母大写,如果变量含义由多个单词组成,那么每个单词的首字母都大写。例如:

string strNameOfSomeone;

由于C# 编辑器区分变量大小写,strName 和 strname、STRNAME是不相同的(个人吐槽:这点没有VB.Net好),这点需要注意。

在实际编程中,如果不是团队开发,各人可以按照个人的习惯来命名变量。比如英文单词不熟悉的可以声明strXingming、strXM,甚至 Xingming,或者汉字的:str姓名、姓名……都可以。在团队开发时,建议采用统一的命名方式,便于阅读,不建议使用诸如:strName1、strName2这样不便于理解的变量名称。

简单的循环可以使用i、j、k等单字母作为变量名称。

需要说明的是,为了讲解方便和便于理解,在本书中有时候不一定会按照以上方法给变量命名,特别是窗体、控件、组件的名称,会使用VS提供的默认名称。

学习更多vb.net知识,请参看vb.net 教程 目录

学习更多C#知识,请参看C#教程 目录

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

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

相关文章

【学习笔记】Google的Lyra项目:基于神经网络的超低比特率语音编解码技术

一、引言:语音通信的带宽挑战与技术突破 在实时音视频通信占据全球数字化生活核心地位的今天,Google于2021年推出的Lyra编解码器标志着语音编码技术进入新的时代。这款基于机器学习的新型音频编解码器以3kbps的极低比特率实现接近原始音质的语音重建能力…

力扣3464. 正方形上的点之间的最大距离

力扣3464. 正方形上的点之间的最大距离 题目 题目解析及思路 题目要求在points集合中找出k个点,k个点之间的最小的曼哈顿距离的最大值 最大最小值的题一般直接想到二分 将正方形往右展开成一条线,此时曼哈顿距离为两点直线距离**(仅起点右边的点)** …

【Java】多线程和高并发编程(四):阻塞队列(上)基础概念、ArrayBlockingQueue

文章目录 四、阻塞队列1、基础概念1.1 生产者消费者概念1.2 JUC阻塞队列的存取方法 2、ArrayBlockingQueue2.1 ArrayBlockingQueue的基本使用2.2 生产者方法实现原理2.2.1 ArrayBlockingQueue的常见属性2.2.2 add方法实现2.2.3 offer方法实现2.2.4 offer(time,unit)方法2.2.5 p…

Crack SmartGit

感谢大佬提供的资源 一、正常安装SmartGit 二、下载crackSmartGit crackSmartGit 发行版 - Gitee.com 三、使用crackSmartGit 1. 打开用户目录:C:\Users%用户名%\AppData\Roaming\syntevo\SmartGit。将crackSmartGit.jar和license.zip拷贝至 用户目录。 2. 用户…

性能巅峰对决:Rust vs C++ —— 速度、安全与权衡的艺术

??关注,带你探索Java的奥秘!?? ??超萌技术攻略,轻松晋级编程高手!?? ??技术宝库已备好,就等你来挖掘!?? ??订阅,智趣学习不孤单!?? ??即刻启航,编…

面试题 - Vue 3 如何优化性能?

面试题 - Vue 3 如何优化性能? 最近,总有小伙伴来问我,在面试时应该如何回答关于优化方面的问题。其实,我们在日常的项目开发中,或多或少都接触过一些优化技巧,只是有时候自己没有特别留意,或者…

easyexcel和poi同时存在版本问题,使用easyexcel导出excel设置日期格式

这两天在使用easyexcel导出excel的时候日期格式全都是字符串导致导出的excel列无法筛选 后来调整了一下终于弄好了,看一下最终效果 这里涉及到easyexcel和poi版本冲突的问题,一直没搞定,最后狠下心来把所有的都升级到了最新版,然…

MTK-Android13-包安装器PackageInstaller 静默安装实现

目的 我们最终是为了搞明白安装的整个流程。一方面通过安卓系统自带的包安装器来了解PMS 安装流程;另一方面熟悉框架层Framework 针对Android apk 安装流程。 前两篇文章分析了PackagerInstaller 安装流程。 Android13-包安装器PackageInstaller-之apk安装跳转 An…

MacOS本地部署Deepseek,不联网也可以使用AI,保护隐私

苹果笔记本本地部署deepseek主要用到Ollama与open-webui 1. 安装Ollama “Ollama” 是一个轻量级的 AI 模型运行时环境(runtime),旨在简化在本地部署和使用大语言模型(LLM)的过程。它由 Vicarious 公司开发&#xff…

Golang笔记——Interface类型

大家好,这里是,关注 公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Golang的interface数据结构类型,包括基本实现和使用等。 文章目录 Go 语言中的 interface 详解接口定义实现接口空接口 interface{} 示例&…

docker容器网络配置及常用操作

Linux内核实现名称空间的创建 ip netns(网络名称空间)命令 可以借助ip netns命令来完成对 Network Namespace 的各种操作。ip netns命令来自于iproute安装包,一般系统会默认安装,如果没有的话,请自行安装。 注意&am…

leetcode - hot100 - python - 专题二:双指针

1、移动0 (一句话概括题眼:右指针找非0元素) 简单 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例…

【玩转 Postman 接口测试与开发2_020】(完结篇)DIY 实战:随书示例 API 项目本地部署保姆级搭建教程(含完整调试过程)

《API Testing and Development with Postman》最新第二版封面 文章目录 最新版《Postman 接口测试与开发实战》示例 API 项目本地部署保姆级搭建教程1 前言2 准备工作3 具体部署3.1 将项目 Fork 到自己名下3.2 创建虚拟环境并安装依赖3.3 初始运行与项目调试 4 示例项目的用法…

【第五节】C++设计模式(创建型模式)-Prototype(原型)模式

目录 一、问题背景 二、 模式选择 三、讨论总结 一、问题背景 在软件开发中,有时我们需要通过已有对象来创建新对象,而不是从头开始构建。这种需求让我想起了现代制造业中的 3D 打印技术。通过扫描一个现有的物体,3D 打印机可以快速复制出…

next.js-学习2

next.js-学习2 1. https://nextjs.org/learn/dashboard-app/getting-started2. 模拟的数据3. 添加样式4. 字体,图片5. 创建布局和页面页面导航 1. https://nextjs.org/learn/dashboard-app/getting-started /app: Contains all the routes, components, and logic …

OpenCV计算摄影学(1)图像修复(Inpainting)的函数inpaint()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用图像中选定区域的邻域来恢复该选定区域。 cv::inpaint 函数是 OpenCV 中用于图像修复(Inpainting)的一个重要函数。它…

北京智和信通:全方位智能 OLT、ONU 设备监控运维方案

随着网络技术的不断迭代与发展,OLT作为光纤接入网中的核心设备,负责管理多个ONU,实现数据的传输和分配。其监控与运维的重要性愈发凸显,为了确保网络运行的高效与稳定,选择一套全面且高效的OLT、ONU监控运维方案显得尤…

python-leetcode-搜索二维矩阵 II

240. 搜索二维矩阵 II - 力扣(LeetCode) class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:if not matrix or not matrix[0]:return Falsem, n len(matrix), len(matrix[0])i, j 0, n - 1 # 从右上角开始whi…

推送项目 之 解决冲突

文章目录 为什么会发生冲突?如何解决这些冲突?1. **查看冲突文件**2. **解决二进制文件冲突**3. **解决文本文件冲突**4. **标记冲突已解决**5. **完成合并**6. **推送更改** 注意事项总结 问题:我们在git pusll拉取远程仓库的代码到本地对比…

网页版的俄罗斯方块

1、新建一个txt文件 2、打开后将代码复制进去保存 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>俄…