Chapter1:初见C#

参考书籍:《C#边做边学》;



1.初见C#
1.1 C#简介
  • C # {\rm C\#} C#编写了许多完成常用功能的程序放在系统中,把系统中包含的内容按功能分成多个部分,每部分放在一个命名空间中,导入命名空间语法格式如下:

    // C#导入命名空间语法格式:
    using 命名空间;
    
  • C # {\rm C\#} C#要求程序中的每一个元素都要属于一个类,程序的所有内容都必须属于一个类, C # {\rm C\#} C#类定义语法格式如下:

    // C#类定义语法格式:
    class 类名
    {类体
    }
    
  • M a i n ( ) {\rm Main()} Main()方法, C # {\rm C\#} C#程序中,程序的执行从 M a i n ( ) {\rm Main()} Main()方法开始,一个程序中不允许出现两个或两个以上的 M a i n ( ) {\rm Main()} Main()方法, M a i n ( ) {\rm Main()} Main()方法必须包含在一个类中, M a i n ( ) {\rm Main()} Main()方法代码如下:

    static void Main()
    
  • C # {\rm C\#} C#程序注释,分为单行注释和多行注释:

    • 单行注释:使用"//"表示其后面内容为注释内容;
    • 多行注释:使用"/*“、”*/“组成多行注释符号,”/*“、”*/"符号间的内容均为注释内容;
  • C # {\rm C\#} C#控制台输入输出:

    • 控制台输入/输出通过命名空间的 C o n s o l e {\rm Console} Console类实现,其提供从控制台读写字符的基本功能;

    • 控制台输入通过 C o n s o l e {\rm Console} Console类的 R e a d ( ) {\rm Read()} Read()方法和 R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法实现,控制台输出通过 C o n s o l e {\rm Console} Console类的 W r i t e ( ) {\rm Write()} Write()方法和 W r i t e L i n e ( ) {\rm WriteLine()} WriteLine()方法实现;

    • C o n s o l e . W r i t e L i n e ( ) {\rm {Console.WriteLine()}} Console.WriteLine()方法:将信息输出到控制台,在输出信息后面添加一个回车换行符,用来产生一个新行;

    • C o n s o l e . W r i t e ( ) {\rm {Console.Write()}} Console.Write()方法:将信息输出到控制台,输出到屏幕后不会产生一个新行;

    • 输出格式化语法:

      // 输出格式化语法(Console.WriteLine()和Console.Write()类似):
      // Console.WriteLine()为例:
      Console.WriteLine("{N[,M][:格式化字符串]}");// 参数说明:
      // {}:用来在输出字符串中插入变量;
      // N:表示输出变量的序号,从0开始;
      // [,M][:格式化字符串]:M表示输出的变量所占的字符个数,当M的值为负数时,输出变量按左对齐方式排列;
      // 当M的值为正数时,输出变量按右对齐方式排列;
      // [:格式化字符串]:指定输出字符串的格式,使用Xn形式指定输出字符串的格式,X指定数字的格式,n指定精度;
      // 格式字符D、d:将数据转换成整数类型格式;// 实例:
      int iNumber = 1234;
      Console.WriteLine("{0:D}", iNumber);		// 结果:1234;
      Console.WriteLine("{0:d3}", iNumber); 		// 结果:1234;
      Console.WriteLine("{0:d5}", iNumber);		// 结果:01234;
      
1.2 第一个控制台应用程序
// CH01_01.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace CH01_01
{class CH01_01{static void Main(){Console.WriteLine("Hello C#.");Console.WriteLine("Welcome to FUXI AI.");}}
}
// CH01_01.cs执行结果:
Hello C#.
Welcome to FUXI AI.

几个常见工程文件:

  • C H 01 _ 01. s l n {\rm CH01\_01.sln} CH01_01.sln:解决方案文件,扩展名 s l n {\rm sln} sln s o l u t i o n {\rm solution} solution的缩写,双击即可打开工程;
  • C H 01 _ 01. c s {\rm CH01\_01.cs} CH01_01.cs:工程代码文件,扩展名 c s {\rm cs} cs C S h a r p {\rm C\ Sharp} C Sharp的缩写;
  • b i n {\rm bin} bin\ D e b u g {\rm Debug} Debug下, C H 01 _ 01. e x e {\rm CH01\_01.exe} CH01_01.exe为可执行文件,双击即可执行;
1.3 Windows应用程序简介
  • C # {\rm C\#} C#中添加控件:
    • 控件表示用户和程序间的图形化连接,控件提供或处理数据、接受用户输入、对事件做出响应或执行连接用户和应用程序的其他功能;
    • 添加控件实例:向窗体中添加按钮 ( B u t t o n ) ({\rm Button}) (Button),即在 V i s u a l S t u d i o {\rm Visual\ Studio} Visual Studio工具箱中单击按钮 ( B u t t o n ) ({\rm Button}) (Button),把按钮拖动到窗体预定位置,然后释放鼠标添加完成;
  • 控件属性:
    • C # {\rm C\#} C#中所有窗体控件,如:标签控件、文本框控件、按钮控件等都继承于 S y s t e m . W i n d o w s . F o r m s . C o n t r o l {\rm System.Windows.Forms.Control} System.Windows.Forms.Control
    • C o n t r o l {\rm Control} Control类作为各种窗体控件的基类,实现了所有窗体交互控件的基本功能,如:处理用户键盘输入、处理消息驱动、限制控件大小等;
    • C o n t r o l {\rm Control} Control类的属性、方法、事件是所有窗体控件公有的, C o n t r o l {\rm Control} Control类的属性描述了一个窗体控件的所有公共属性;
  • 常用控件属性:
    • N a m e {\rm Name} Name属性:每个控件都有一个名字 ( N a m e ) ({\rm Name}) (Name)属性,在应用程序中,可以通过此属性来引用此控件; C # {\rm C\#} C#会给每个新添加的控件指定一个默认名,一般由控件类型和序号组成,如: b u t t o n 1 、 b u t t o n 2 、 t e x t B o x 1 、 t e x t B o x 2 {\rm button1、button2、textBox1、textBox2} button1button2textBox1textBox2
    • T e x t {\rm Text} Text属性: C # {\rm C\#} C#中,每个控件对象都有 T e x t {\rm Text} Text属性,是与控件对象实例关联的一段文本,用户可以查看或进行输入;如:在标签控件中显示的文本、在文本框中用户输入的文字、组合框和窗体中的标题等都是用控件的 T e x t {\rm Text} Text属性进行设定;
  • 控件方法:通过调用 C o n t r o l {\rm Control} Control类的方法来获得控件的一些信息,或设置控件的属性值及行为状态,如: F o c u s {\rm Focus} Focus方法可设置此控件获得的焦点, R e f r e s h {\rm Refresh} Refresh方法可重画控件, S e l e c t {\rm Select} Select方法可激活控件, S h o w {\rm Show} Show方法可显示控件等;
  • 控件事件: C # {\rm C\#} C#中用户进行某一项操作时,会引发某个事件的发生,此时会调用事件处理程序代码,实现对程序的控制,事件驱动实现基于窗体消息传递和消息循环机制;如:单击时发生的 C l i c k ( ) {\rm Click()} Click()事件,双击时发生的 D o u b l e C l i c k ( ) {\rm DoubleClick()} DoubleClick()事件,取得焦点时发生的 G e t F o c u s ( ) {\rm GetFocus()} GetFocus()事件,鼠标移动时发生的 M o u s e M o v e ( ) {\rm MouseMove()} MouseMove()事件等;
1.4 第一个Windows应用程序
  • 新建 W i n d o w s {\rm Windows} Windows应用程序,项目名称: C H 01 _ 02 {\rm CH01\_02} CH01_02,在文件 F o r m 1. c s {\rm Form1.cs} Form1.cs重命名为 C H 01 _ 02. c s {\rm CH01\_02.cs} CH01_02.cs

  • 在已生成的窗体单击,修改窗口的属性, N a m e {\rm Name} Name属性改为:“ C H 01 _ 02 {\rm CH01\_02} CH01_02”, T e x t {\rm Text} Text属性改为: C H 01 _ 02 {\rm CH01\_02} CH01_02

  • V i s u a l S t u d i o {\rm Visual\ Studio} Visual Studio的左侧"工具箱"窗口,拖动 W i n d o w s {\rm Windows} Windows控件放置窗口中:

    • 拖动 L a b e l {\rm Label} Label控件,修改" N a m e {\rm Name} Name“属性: I n f o D i s p l a y {\rm InfoDisplay} InfoDisplay,” T e x t {\rm Text} Text“属性:空,” B a c k C o l o r {\rm BackColor} BackColor"属性: W i n d o w s {\rm Windows} Windows
    • 拖动 B u t t o n {\rm Button} Button控件,修改" N a m e {\rm Name} Name“属性: b t n B u t t o n {\rm btnButton} btnButton,” T e x t {\rm Text} Text"属性:点击显示;
  • 窗体设计如下:

    1

  • 双击按钮 ( B u t t o n ) ({\rm Button}) (Button)进入代码设计,代码如下:

    // CH01_02.cs
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;namespace CH01_02
    {public partial class CH01_02 : Form{public CH01_02(){InitializeComponent();}private void btnButton_Click(object sender, EventArgs e){this.InfoDisplay.Text = "Welcome to FUXI AI.";}private void CH01_02_Load(object sender, EventArgs e){}}
    }
  • C t r l + F 5 {\rm Ctrl+F5} Ctrl+F5执行,点击"点击显示"按钮,结果如下:

    2

1.5 简易AGV运行控制界面

项目需求:搭建 A G V {\rm AGV} AGV简易控制系统,设置 5 5 5个按钮,包括向前、向后、向左、向右、停止按钮,点击按钮显示对应的信息,简易控制系统界面如下:

3

  • 新建" W i n d o w s {\rm Windows} Windows"应用程序,在设计窗口拖动 5 5 5个按钮 ( B u t t o n ) ({\rm Button}) (Button) 1 1 1个标签 ( L a b e l ) ({\rm Label}) (Label),其 N a m e {\rm Name} Name属性和 T e x t {\rm Text} Text属性如下:

    • 设计窗口属性: N a m e {\rm Name} Name属性为 C H 01 _ 03 {\rm CH01\_03} CH01_03 T e x t {\rm Text} Text属性为 A G V C o n t r o l S y s t e m {\rm AGV\ Control\ System} AGV Control System
    • " G O F O R W A R D {\rm GO\ FORWARD} GO FORWARD"按钮: N a m e {\rm Name} Name属性为 f o r w a r d B u t t o n {\rm forwardButton} forwardButton T e x t {\rm Text} Text属性为 G O F O R W A R D {\rm GO\ FORWARD} GO FORWARD
    • " S T O P {\rm STOP} STOP"按钮: N a m e {\rm Name} Name属性为 s t o p B u t t o n {\rm stopButton} stopButton T e x t {\rm Text} Text属性为 S T O P {\rm STOP} STOP
    • " G O B A C K W A R D {\rm GO\ BACKWARD} GO BACKWARD"按钮: N a m e {\rm Name} Name属性为 b a c k w a r d B u t t o n {\rm backwardButton} backwardButton T e x t {\rm Text} Text属性为 G O B A C K W A R D {\rm GO\ BACKWARD} GO BACKWARD
    • " T U R N L E F T {\rm TURN\ LEFT} TURN LEFT"按钮: N a m e {\rm Name} Name属性为 l e f t B u t t o n {\rm leftButton} leftButton T e x t {\rm Text} Text属性为 T U R N L E F T {\rm TURN\ LEFT} TURN LEFT
    • " T U R N R I G H T {\rm TURN\ RIGHT} TURN RIGHT"按钮: N a m e {\rm Name} Name属性为 r i g h t B u t t o n {\rm rightButton} rightButton T e x t {\rm Text} Text属性为 T U R N R I G H T {\rm TURN\ RIGHT} TURN RIGHT
    • " i n f o D i s p l a y {\rm infoDisplay} infoDisplay"标签: N a m e {\rm Name} Name属性为 i n f o D i s p l a y {\rm infoDisplay} infoDisplay T e x t {\rm Text} Text属性为空格;
  • 实现程序:

    // CH01_03.cs
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;namespace CH01_03
    {public partial class CH01_03 : Form{public CH01_03(){InitializeComponent();}private void forwardButton_Click(object sender, EventArgs e){this.infoDisplay.Text = "AGV is going forward...";}private void stopButton_Click(object sender, EventArgs e){this.infoDisplay.Text = "AGV STOP.";}private void backwardButton_Click(object sender, EventArgs e){this.infoDisplay.Text = "AGV is going backward...";}private void leftButton_Click(object sender, EventArgs e){this.infoDisplay.Text = "AGV is turning left...";}private void rightButton_Click(object sender, EventArgs e){this.infoDisplay.Text = "AGV is turning right...";}}
    }
    
  • 运行效果:

    4

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

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

相关文章

React封装倒计时按钮

背景 在开发过程中,经常需要使用到倒计时的场景,当用户点击后,按钮进行倒计时,然后等待邮件或者短信发送,每次都写重复代码,会让代码显得臃肿,所以封装一个组件来减少耦合 创建一个倒计时组件…

【编译构建】用cmake编译libjpeg动态库并实现转灰度图片

先编译出libjepg动态库 1、下载libjpeg源码: https://github.com/libjpeg-turbo/libjpeg-turbo 2、编译出动态库或静态库 写一个编译脚本,用cmake构建。 #!/bin/bash# 定义变量 SOURCE_DIR"/home/user/libjpeg-turbo-main" BUILD_DIR"${SOURCE_…

ORB-SLAM2源码学习: Frame.cc: cv::Mat Frame::UnprojectStereo将某个特征点反投影到三维世界坐标系中

前言 这个函数是在跟踪线程中更新上一帧的函数中被调用。 1.函数声明 cv::Mat Frame::UnprojectStereo(const int &i) 2.函数定义 1.获取这个特征点的深度值。 const float z mvDepth[i];深度值由双目或 RGB-D 传感器获取。 在双目情况下,这个深度来自…

单片机存储器和C程序编译过程

1、 单片机存储器 只读存储器不是并列关系,是从ROM发展到FLASH的过程 RAM ROM 随机存储器 只读存储器 CPU直接存储和访问 只读可访问不可写 临时存数据,存的是CPU正在使用的数据 永久存数据,存的是操作系统启动程序或指令 断电易失 …

【Excel】【VBA】双列排序:坐标从Y从大到小排列之后相同Y坐标的行再对X从小到大排列

Excel VBA 双列排序 功能概述 这段VBA代码实现了Excel中的双列排序功能,具体是: 跳过前3行表头先按C列数据从大到小排序在C列值相同的情况下,按B列从大到小排序排序时保持整行数据的完整性 流程图 #mermaid-svg-XJERemQluZlM4K8l {font-fa…

【25考研】西南交通大学软件工程复试攻略!

一、复试内容 复试对考生的既往学业情况、外语听说交流能力、专业素质和科研创新能力,以及综合素质和一贯表现等进行全面考查,主要考核内容包括思想政治素质和道德品质、外语听说能力、专业素质和能力,综合素质及能力。考核由上机考试和面试两部分组成&a…

运行fastGPT 第四步 配置ONE API 添加模型

上次已经装好了所有的依赖和程序。 下面在网页中配置One API ,这个是大模型的接口。配置好了之后,就可以配置fastGPT了。 打开 OneAPI 页面 添加模型 这里要添加具体的付费模型的API接口填进来。 可以通过ip:3001访问OneAPI后台,**默认账号…

硬件知识:显示器发展历程介绍

目录 一、阴极射线管显示器(CRT) 二、等离子显示器(PDP) 三、液晶显示器(LCD) 四、传统LED显示器(LED) 五、有机发光二极管显示器(OLED) 六、量子点显示器(QD) 七、MiniLED显示器(MiniLED) 八、MicroLED显示器(MicroLED) 总结 显示器作为电子设备与人…

修复5.0.0r 64位版本浏览器和一些库找不到的问题

笔者在使用5.0.0r版本64位时踩过不少坑,先将相关修复方法分享 浏览器无法使用 base/startup/appspawn/appdata-sandbox64.json添加沙箱配置 相关修复pr:https://gitee.com/openharmony/startup_appspawn/pulls/1854/files {"src-path" : "/system…

【Flink系列】4. Flink运行时架构

4. Flink运行时架构 4.1 系统架构 Flink运行时架构——Standalone会话模式为例 1)作业管理器(JobManager) JobManager是一个Flink集群中任务管理和调度的核心,是控制应用执行的主进程。也就是说,每个应用都应该被…

IP层之分片包的整合处理

前言 在上一章节中,笔者就IP层的接收代码逻辑做了简单介绍,并对实现代码进行了逻辑梳理以及仿真测试,并且在上一章节中,就IP层的分片包问题,如何确定分片包是否存在已经进行了简单介绍,并在接收模块中&…

使用jupyter notebook没有正常打开浏览器的几种情况解决

迅速记录前期 1.下载 https://www.anaconda.com/products/individual 2.安装 直接默认安装就行 3.打开jupyter notebook 在开始菜单里面可以找到 4.遇到的问题解决 1.运行jupyter notebook,黑窗口自动关了 每次黑窗口迅速的加载完就自己关掉了 也没有打开新…

50.【8】BUUCTF WEB HardSql

进入靶场 随便输输 上order by ????????,被过滤了,继续找其他也被过滤的关键字 #,-- -,-- 都不行,尝试其他特殊字符后发现and,union,select,空格,都被过滤了 如下 我就不知…

中国石油大学(华东)自动评教工具(涵盖爬虫的基础知识,适合练手)

我开发了一个用于自动评教的工具,大家可以试着用用,下面是链接。 https://github.com/restrain11/auto_teachingEvaluate 可以点个星吗,感谢!🫡 以下是我在开发过程中学到的知识 以及 碰到的部分问题 目录 动态爬虫和静…

深入云电脑PC Farm技术探讨,以阿里云、华为云、ToDesk为例

🌝引言 近年来,云计算技术的飞速发展为各行各业的数字化转型带来了全新机遇,其中云电脑作为一种虚拟化桌面解决方案,逐渐成为个人用户与企业的核心选择。从远程办公、在线教育到高性能计算需求,云电脑通过为用户提供随…

RK3568平台(音频篇)lineout无声调试

一.声音硬件框架 硬件HP_MUTE已强制拉低。 二.设备树配置 es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card";rockchip,card-name = "rockchip-es8388";hp-det-gpio = <&gpio1 RK_PD2 GPIO_ACT…

docker 部署 MantisBT

1. docker 安装MantisBT docker pull vimagick/mantisbt:latest 2.先运行实例&#xff0c;复制配置文件 docker run -p 8084:80 --name mantisbt -d vimagick/mantisbt:latest 3. 复制所需要配置文件到本地路径 docker cp mantisbt:/var/www/html/config/config_inc.php.…

【Linux】Mysql部署步骤

一、JDK安装配置 在home目录下执行命令&#xff1a;mkdir Jdk 1.将JDK 上传至该文件夹&#xff0c;有些终端工具可以直接上传文件&#xff0c;比如&#xff1a;MobaXterm 可以看到安装包已经上传上来了 2.直接安装 命令&#xff1a;rpm -ivh jdk-8u311-linux-x64.rpm 3.安装成…

静态综合路由实验

实验拓扑 实验要求 1.除R5的环回地址外&#xff0c;整个其他所有网段基于192.168.1.0/24进行合理的IP地址划分 2.R1-R4每个路由器存在两个环回接口&#xff0c;用于模拟pc网段&#xff1b;地址也在192.168.1.0/24这个网络范围内 3.R1-R4上不能直接编写到达5.5.5.0/24的静态路由…

Unity ShaderGraph中Lit转换成URP的LitShader

ShaderGraph中的LitShader如下&#xff1a; 在顶点和片元着色器暴露出了上图中的几个参数&#xff0c;要转换成URPLitShaderLab,首先要找到这几个参数&#xff0c;打开LitShader&#xff0c;找到第一个Pass&#xff0c;可以看到下图中的顶点和片元的定义函数&#xff0c;还有引…