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

【1】VS Code 新建上位机项目---C#基础语法

VS Code 新建上位机项目---C#基础语法

  • 1 基本概念
    • 1.1 准备工具
    • 1.2 新建项目
  • 2 C#编程基础
    • 2.1 命名空间和类
    • 2.2 数据类型
    • 2.3 控制台输入输出
      • 2.3.1 输入输出: write 与 read
      • 2.3.2 格式化 : string.Foramt() 与 $
      • 2.3.3 赋值与运算
    • 2.4 类型转换
      • 2.4.1 数值类型之间的转换:(int)
      • 2.4.2 字符串与数值类型之间的转化: .Parse() 与 .ToString()
      • 2.4.3 强制转换 Convert.To
    • 2.5 逻辑指令
      • 2.5.1 选择语句: if(适合区间判断)
      • 2.5.2 优先级与if else
      • 2.5.3 三元运算符
      • 2.5.4 多条件与嵌套: if - else if
      • 2.5.5 分支结构:switch(适合等值判断)
      • 2.5.6 循环结构: for
      • 2.5.7 循环结构: while 条件循环
      • 2.5.8 循环结构: do while
  • 3 字符串与数组
    • 3 .1 字符串
      • 3.1.1 索引位置: IndexOf()获取长度: .Length属性,截取:Substring()
      • 3.1.2 字符串比较: .Equals()
      • 3.1.3 空值字符串
      • 3.1.4 字符串去除空格: .Trim()
      • 3.1.5 字符拼接: StringBuilder() 类
      • 3.1.6 转义字符
    • 3.2 数组
      • 3.2.1 数组的定义
      • 3.2.2 元素的遍历: foreach(int element in Data)
      • 3.2.3 数组与字符串拼接:Split() 与 string.Join() 与Repalce()
  • 4 值类型与引用类型
  • 5 .NET底层类与C#关键字
  • 6 常量与枚举
    • 6.1 常量:const
    • 6.2 枚举:enum
      • 6.2.1 自定义枚举
      • 6.2.2 系统枚举:对话框,星期
  • 7 调试:debug

1 基本概念

1.1 准备工具

  1. 安装 VS Code 2022 社区版
  2. 安装 MySql 2019
  3. 安装 .NETFrameWork .NET 8.0

1.2 新建项目

  1. 打开VS Code。新建项目。选择控制台应用(.NET Framwork)
    在这里插入图片描述
  2. 修改项目名称,存储位置,框架( .NET 4.0/4.6对应VS Code2019),这里选择( .NET 4.8 来适配VS Code2022,因为是基于 .NET Framework 框架开发的,所以必须要选择合适的版本。点击创建。
    在这里插入图片描述
  3. VS code 默认创建了一个新的控制台项目。
    在这里插入图片描述
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace HMI_Test
{
//项目的组成部分internal class Program{static void Main(string[] args){}}
}

解决方案:
(1)Properties:项目的属性信息,程序集AssemblyInfo。
(2)引用:需要调用计算机或者第三方配置的东西。(有时项目到其它电脑无法运行,就是因为引用的东西不存在)
(3)App.config:运行时使用的参数。
(4)C# Program:项目入口文件,程序从这里开始执行。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2 C#编程基础

2.1 命名空间和类

类是程序的基本单元,实现封装要处理的库或者是具体的处理过程

using System; //引入的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; //引用namespace HMI_Test  //命名空间
{internal class Program  //类的名称{//字段,属性,构造方法等等static void Main(string[] args)  //方法{}}
}

(1)命名空间
【1】必须要有:任何一个类都要属于一个特定的命名空间。
【2】用于管理:通过命名空间更好的对“类”进行分类管理,
【3】自己规划:一个项目可以根据实际需要,开发者自己划分若干命名空间。
【4】默认名称:默认命名空间和项目名称相同。
【5】使用方法:用“.”来分割,但是不表示包含关系。(理解成层次关系)【6】特别注意:不能以数字、特殊字符开头,也不建议用中文。

(2)引入时机
【1】情况1:如果两个类所在的命名空间不同.
【2】方法1:其中一个类使用另一个类,则要引入命名空间(使用using)或者“限定名”
【3】情况2:如果两个类所在的类库不同。
【4】方法2:先引入类库,再引入命名空间。

2.2 数据类型

在这里插入图片描述

int data1 = 16
double data2 = 20.0 //浮点双精度
float data3 =20.0f //浮点单精度
string name ="你好世界" ; //字符串
char name1 ='2'; //字符
bool stop = falsebool start = ture;
DateTime dt = Convert.ToDateTime()
  1. 变量

变量是数据的存储空间,可以理解为存储地址的别名

数据类型 变量名称 变量值

2.3 控制台输入输出

2.3.1 输入输出: write 与 read

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;namespace Thinger.ConsoleAndOperation
{internal class Program{static void Main(string[] args){//Test1();  //调用方法Test1();Console.ReadLine();//读取}#region  //Write and Writelinestatic void Test1(){Console.Write("请输入学员姓名:");    //输入的位置与注释在同一行Console.WriteLine("请输入学员姓名:");//输入的位置与注释非同一行}#endregion //折叠语句#region  //Readlinestatic void Test2(){ Console.Write("请输入学员姓名:");//输入学员姓名string name = Console.ReadLine(); //读取控制台的信息给name//从控制台读取和写入的信息都是字符串类型Console.Write("请输入学员成绩:");//输入学员成绩int score =int.Parse ( Console .ReadLine ());//需要将读取的字符转换成intConsole.WriteLine("姓名:"+name+ " 成绩:"+score);//显示}#endregion

控制台输入输出都是字符串,write/read与writeline/readline之间的差距就是是否有换行

2.3.2 格式化 : string.Foramt() 与 $

#region  //字符串的格式化方法string.Foramt() 和 $static void Test3(){Console.Write("请输入学员姓名:");//输入学员姓名string name = Console.ReadLine(); //读取控制台的信息给nameConsole.Write("请输入学员成绩:");//输入学员成绩int score = int.Parse(Console.ReadLine());//需要将读取的字符转换成intConsole.Write("请输入学员班级:");//输入学院班级string classname= Console.ReadLine();//普通拼接string result = "姓名:" + name + " 成绩:" + score + " 班级:" + classname;Console.WriteLine(result);//格式化方法1 string.Format(result,classname)string result1 =string.Format("姓名:{0} 成绩:{1} 班级: {2}",name,score,classname);Console.WriteLine(result1);// Console.WriteLine("姓名:{0} 成绩:{1} 班级: {2}",name,score,classname);//格式化方法2string result2 = $"姓名:{name} 成绩:{score} 班级: {classname}";Console.WriteLine(result2);//Console.WriteLine($"姓名:{name} 成绩:{score} 班级: {classname}");}#endregion

在这里插入图片描述
在这里插入图片描述

//货币格式
int money=5000string moneyType = string.Format(“总金额:{0:C},money);
Console.Writeline($"总金额:{money:C}")
//保留小数点
double num = 5.6666;
double num1 = num.ToString("0.00");//保留两位小数
double num1 = num.ToString("0.000");//保留三位小数

2.3.3 赋值与运算

    #region  //赋值与运算符static void Test4(){int a = 16; // 赋值int b = 20;int c = 12;int result = a + b;Console.WriteLine ($"结果 {result}");a += b;//a=a+ba -= b;//a=a-ba *= b;//a=a*bresult = a % b;//a对b取余// c++; //c=c+1// c--;//c=c-1//++c;//c=c+1// --c;//c=c-1Console.WriteLine($"c={c++}");//先输出c的值,再执行++Console.WriteLine($"c={++c}");//先执行++,再输出c的值string name1 = "James";string name2 = "jacks";string name3 = "James";// bool result1=name1.Equals(name2);//指令的等于// Console.WriteLine(result1);Console.WriteLine(name1 == name2);//运算符等于Console.WriteLine(name1 != name2);//运算符不等于Console.WriteLine(a > b);Console.WriteLine(a <= b);}#endregion}
}

在这里插入图片描述

2.4 类型转换

2.4.1 数值类型之间的转换:(int)

自动转换:目标类型大于使用的数据类型就可以实现自动类型

double a = 100.5;//双精度浮点
int b =200;//整型
double result = a+b;//转换成双精度浮点可以运行
int result2 = a+b;//转换成整型会报错

强制转换:当目标类型小于使用的数据类型

<

相关文章:

【1】VS Code 新建上位机项目---C#基础语法

VS Code 新建上位机项目---C#基础语法 1 基本概念1.1 准备工具1.2 新建项目2 C#编程基础2.1 命名空间和类2.2 数据类型2.3 控制台输入输出2.3.1 输入输出: write 与 read2.3.2 格式化 : string.Foramt() 与 $2.3.3 赋值与运算2.4 类型转换2.4.1 数值类型之间的转换:(int)2.4…...

电脑经常绿屏(蓝屏)怎么办(解决方法)?

一、排查系统与驱动问题 进入安全模式修复系统 强制重启电脑 3 次触发恢复环境&#xff0c;选择 疑难解答 > 高级选项 > 启动设置 > 重启&#xff0c;按 F5 或 5 进入带网络连接的安全模式3。 在安全模式下&#xff0c;尝试卸载最近安装的软件或更新&#xff0c;尤其…...

clickhouse--本地表和分布式表,副本机制,分片集群

1、本地表和分布式表 ck的表分为两种: 分布式表   一个逻辑上的表&#xff0c;可以理解为数据库中的视图&#xff0c;一般查询都查询分布式表。分布式表引擎会将我们的查询请求路由本地表进行查询&#xff0c;然后进行汇总最终返回给用户。本地表   实际存储数据的表。 …...

react hook useReducer

useReducer useReducer 是 React 中用于状态管理的 Hook&#xff0c;与 useState 不同&#xff0c;它更适合处理复杂的状态逻辑. const [state, dispatch] useReducer(reducer, initialArg, init?) reducer 是一个处理函数&#xff0c;用于更新状态, reducer 里面包含了两个…...

告别阻塞,迎接高效:掌握 AsyncIOScheduler 实现异步任务调度

前言 时间在编程中是宝贵的,直接关联到效率与灵活性,尤其在异步编程里,如何优雅地管理定时任务简直是一门“艺术”。如果你还在用 time.sleep() 来控制延时任务,恐怕你早已体会过它的“痛苦”:程序卡住、线程阻塞、性能急剧下滑。想象一下,你的程序如同一个永远无法按时…...

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之加入购物车和显示购物车列表

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【Spring篇】【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f680;1.加入购物车-数…...

再谈影刀RPA成长学习路线

近期&#xff0c;我将使用影刀RPA开发各电商平台移动端商品信息爬取,实战流程会在QQ群里分享&#xff0c;欢迎大家进群&#xff0c;一起探讨交流&#xff01; 1. 影刀RPA学习路线概述 1.1 学习目标与意义 学习影刀RPA的目标在于掌握一种高效的工作自动化工具&#xff0c;以提…...

PHP-综合4

[题目信息]&#xff1a; 题目名称题目难度PHP-综合42 [题目考点]&#xff1a; PHP综合训练[Flag格式]: SangFor{Ouk3i63BuShgxqdRcn_9kMNqKFDe5j4f}[环境部署]&#xff1a; docker-compose.yml文件或者docker tar原始文件。 http://分配ip:2087[题目writeup]&#xff1a;…...

学习笔记-沁恒第五讲-米醋

一&#xff0c;设置音量 上次 这次 #include "uart.h" #include "debug.h" void audio_init() { Usart3_Init(); } void audio_play(u8 num) { u8 string[]{0x7e,0x05,0x41,0x00,num,0x05^0x41^0x00^num,0xef}; u8 i; for(i0;i<7;i) { USART_Se…...

【JavaScript】JavaScript 常见概念 - 变量与数据类型 - 运算符 - 条件语句 - 循环 - 函数 - 数组操作 - 对象

1. 变量与数据类型 变量声明 JavaScript 提供了三种方式来声明变量&#xff1a; var&#xff08;全局或函数作用域&#xff0c;不推荐&#xff09;let&#xff08;块级作用域&#xff0c;推荐&#xff09;const&#xff08;常量&#xff0c;块级作用域&#xff0c;推荐&…...

Web自动化之Selenium添加网站Cookies实现免登录

在使用Selenium进行Web自动化时&#xff0c;添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为&#xff0c;我们可以将已登录状态的Cookies存储起来&#xff0c;并在下次自动化测试或爬虫任务中直接加载这些Cookies&#xff0c;从而跳过登录步骤。 Cookies简介 …...

AI手机的技术细节

前序&#xff1a;先说各个功能涉及到的技术&#xff0c;再说宏观系统架构。AI手机有这样几个做法&#xff0c;给手机侧边增加一个按键&#xff1b;把手机的语音助手做的很好&#xff0c;能够快速稳定的进行唤醒&#xff1b;通过特殊形式的触摸手机的曲面屏位置等来进行唤醒AI …...

10. 九转金丹炼矩阵 - 矩阵置零(标记优化)

哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的金丹谷,谷中有一座巨大的九转金丹炉,炉身闪烁着神秘的光芒。金丹炉的入口处有一块巨大的石碑,上面刻着一行文字:“欲破此炉,需以九转金丹之力,炼矩阵之零,标记优化定乾坤。” 哪吒定睛一看,石碑上还有…...

[实现Rpc] 客户端 | Requestor | RpcCaller的设计实现

目录 Requestor类的实现 框架 完善 onResponse处理回复 完整代码 RpcCaller类的实现 1. 同步调用 call 2. 异步调用 call 3. 回调调用 call Requestor类的实现 &#xff08;1&#xff09;主要功能&#xff1a; 客户端发送请求的功能&#xff0c;进行请求描述对服务器…...

Java 大视界 -- 深度洞察 Java 大数据安全多方计算的前沿趋势与应用革新(52)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

山东大学软件学院nosql实验三

实验题目&#xff1a; 用Java做简单查询(2学时) 实验内容 用API方式&#xff0c;做简单查询。 实验要求 在以下要求中选择至少2个&#xff0c;使用Java语言实现数据查询&#xff0c;最终把数据输出到前端界面。 &#xff08;1&#xff09;找出年龄小于20岁的所有学生 &…...

正态分布的奇妙性质:为什么奇数阶中心矩(odd central moments)为零?

正态分布的奇妙性质&#xff1a;为什么奇数阶矩为零&#xff1f; 正态分布&#xff08;Normal Distribution&#xff09;是统计学中最常见的分布之一&#xff0c;它的钟形曲线几乎无处不在&#xff0c;从身高体重到测量误差&#xff0c;都能看到它的影子。除了均值和方差这两个…...

【入门音视频】音视频基础知识

&#x1f308;前言&#x1f308; 这个系列在我学习过程中&#xff0c;对音视频知识归纳总结的笔记。因为音视频相关讲解非常稀少&#xff0c;所以我希望通过这个音视频系列&#xff0c;跟大家一起学习音视频&#xff0c;希望减少初学者在学习上的压力。同时希望也欢迎指出文章的…...

游戏引擎学习第120天

仓库:https://gitee.com/mrxiao_com/2d_game_3 上次回顾&#xff1a;周期计数代码 我们正在进行一个项目的代码优化工作&#xff0c;目标是提高性能。当前正在优化某个特定的代码片段&#xff0c;已经将其执行周期减少到48个周期。为了实现这一目标&#xff0c;我们设计了一个…...

【Qt之QQuickWidget】QML嵌入QWidget中

由于我项目开始使用Widgets,换公司后直接使用QML开发&#xff0c;没有了解过如何实现widget到qml过渡&#xff0c;恰逢面试时遇到一家公司希望从widget迁移到qml开发&#xff0c;询问相关实现&#xff0c;一时语塞&#xff0c;很尴尬&#xff0c;粗略研究并总结下。 对qwidget嵌…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

鸿蒙Navigation路由导航-基本使用介绍

1. Navigation介绍 Navigation组件是路由导航的根视图容器&#xff0c;一般作为Page页面的根容器使用&#xff0c;其内部默认包含了标题栏、内容区和工具栏&#xff0c;其中内容区默认首页显示导航内容&#xff08;Navigation的子组件&#xff09;或非首页显示&#xff08;Nav…...

vue3 手动封装城市三级联动

要做的功能 示意图是这样的&#xff0c;因为后端给的数据结构 不足以使用ant-design组件 的联动查询组件 所以只能自己分装 组件 当然 这个数据后端给的不一样的情况下 可能组件内对应的 逻辑方式就不一样 毕竟是 三个 数组 省份 城市 区域 我直接粘贴组件代码了 <temp…...