Chapter1:初见C#

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



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

    c# 复制代码
    // C#导入命名空间语法格式:
    using 命名空间;
  • C # {\rm C\#} C#要求程序中的每一个元素都要属于一个类,程序的所有内容都必须属于一个类, C # {\rm C\#} 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()方法代码如下:

    C# 复制代码
    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()方法:将信息输出到控制台,输出到屏幕后不会产生一个新行;

    • 输出格式化语法:

      c# 复制代码
      // 输出格式化语法(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 第一个控制台应用程序
c# 复制代码
// 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.");
        }
    }
}
c# 复制代码
// 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} button1、button2、textBox1、textBox2;
    • 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"属性:点击显示;
  • 窗体设计如下:

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

    c# 复制代码
    // 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执行,点击"点击显示"按钮,结果如下:

1.5 简易AGV运行控制界面

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

  • 新建" 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属性为空格;
  • 实现程序:

    c# 复制代码
    // 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...";
            }
        }
    }
  • 运行效果:

相关推荐
毋若成16 分钟前
【搭建JavaEE】(3)前后端交互,请求响应机制,JDBC数据库连接
数据库·java-ee·交互
m0_7482417019 分钟前
C#数据库操作系列---SqlSugar完结篇
网络·数据库·c#
C++小厨神42 分钟前
Java语言的循环实现
开发语言·后端·golang
天天向上杰1 小时前
简识MySQL中ReadView、RC、RR的关系
数据库·mysql
久绊A1 小时前
理解CPU负载与使用率
服务器·网络·数据库·cpu
你疯了抱抱我1 小时前
Oracle知识点1:如何修改密码并登录sys/system账号
数据库·oracle
Quantum&Coder2 小时前
Ruby语言的数据库编程
开发语言·后端·golang
請叫我菜鳥2 小时前
PHP xml 常用函数整理
开发语言·php
ByteBlossom6662 小时前
Ruby语言的网络编程
开发语言·后端·golang
J不A秃V头A2 小时前
自定义SqlSessionFactory时mybatis-config.xml失效
java·开发语言