当前位置: 首页 > 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嵌…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

CTF show 数学不及格

拿到题目先查一下壳&#xff0c;看一下信息 发现是一个ELF文件&#xff0c;64位的 ​ 用IDA Pro 64 打开这个文件 ​ 然后点击F5进行伪代码转换 可以看到有五个if判断&#xff0c;第一个argc ! 5这个判断并没有起太大作用&#xff0c;主要是下面四个if判断 ​ 根据题目…...