学习C#的起点,人人都能认识C#,学会编程一点不难
bigegpt 2024-10-12 05:29 11 浏览
C#程序结构包括:注释块、命名空间、类、方法、标识符、关键字、语句
命名空间:
命名空间(Namespace)就是把功能相同的类放到一块,用来组织和重用代码,C#程序结构中每个命名空间相当于一个逻辑结构的仓库,C#程序是利用各种命名空间组织起来的,而实际上命名空间能将同名的类分开。它好比一个文件夹,把不同性质的内容放到不同文件夹里面,每一个文件夹里面还可以有很多文件夹,形成分层结构,即使两个文件名重名,你也能够通过文件夹找到它们,就不会混淆不清了。先来看看命名空间代码:
//System命名空间是系统已经定义好的命名空间,包含用于定义常用值和引用数据类型、事件和事件处理程序、接口、特性以及处理异常的基础类和基类。
using System;
//引用System.Data表示你需要使用数据、数组,可以直接使用数组类型,而不需要再添加前缀
using System.Data;
//用户自己定义的命名空间
using namespace2;
//System.Collections.Generic命名空间,包含处理集合的泛型类型
using System.Collections.Generic;
//可以使用类似SQL的语法来查询数据
using System.Linq;
//using System.Text空间,包含与字符串处理和编码相关的类型
using System.Text;
//using System.Windows.Forms,使用窗体内置的各种控件、事件类
using System.Windows.Forms;
命名空间分为两类:用户定义的命名空间和系统定义的命名空间
用户定义的命名空间:就是用户自己在代码中定义的命名空间
系统定义的命名空间:你可以使用关键字using来调用系统已经定义好的命名空间
using System命名空间:是系统已经定义好的命名空间,包含用于定义常用值和引用数据类型、事件和事件处理程序、接口、特性以及处理异常的基础类和基类
using System.Data命名空间:引用System.Data表示你需要使用数据、数组,可以直接使用数组类型,而不需要再添加前缀。如果没有引用System.Data,当你需要定义一个数据表类型的变量需要加前缀:System.Data.DataTable dataTable = new System.Data.DataTable();如果引用了System.Data,则你就不用加前缀:DataTable dataTable = new DataTable();
using System.Collections.Generic命名空间:System.Collections.Generic命名空间,包含处理集合的泛型类型
using System.Linq命名空间:Linq是在.NET Framework 3.5 中才出现的技术,它提供支持使用语言集成查询 (LINQ) 进行查询的类和接口,借助于LINQ技术,你可以使用类似SQL结构化查询的语法格式来查询任何形式的数据,它的出现大大提高了程序查询和处理数据的能力和效率,对于一个数据库高手来讲,它的出现简直就是福音
using System.Text命名空间:using System.Text命名空间提供常用的字符串操作,包含与字符串处理和编码相关的类型
控制台应用程序:打开VS软件创建控制台应用程序,键入代码
using System;
namespace namespace1//用户命名空间
{
class Program//用户定义的类,实现某一特定功能
{
static void Main(string[] args) //程序入口
{
Console.WriteLine("命名空间的学习和理解");//实现输出一条信息
}
}
}
运行程序:
这里面用到了System命名空间下的Console类,System中已经定义好了Console类,如果你不在前面使用using System,这里面就要用到它的完全限定名称了System.Console.WriteLine()
用户自己定义的命名空间中的类
using System;
using namespace2;//用户自定义的命名空间
namespace namespace1
{
class Program
{
static void Main(string[] args) //程序入口
{
p2 n = new p2();//对用户自己定义的类进行实例化
n.s1();//使用用户自己定义的类中的方法
}
}
}
namespace namespace2//用户自己定义的命名空间
{
class p2//用户自定义的类
{
public void s1()//用户自定义的类中的方法
{
Console.WriteLine("使用用户自己定义命名空间中的类");//输出一条信息,这里用到了系统命名空间中的Console类
Console.ReadLine();
}
}
}
运行程序:
如果你在前面不引用用户自定义的命名空间:using namespace2,程序就会报错:
类
C#的类,是一种数据结构,装着各种成员,它是C#语言的核心和基本构成模块,它的最大的特色是,用户不仅可以使用系统已经定义好的类,也可以使用用户根据自己需要自己定义的类。
当你在使用新的类之前,必须要事先声明这个类,声明类的关键字是class,上文就有声明p2类的代码:
class p2//用户自定义的类
{
public void s1()
{
Console.WriteLine("使用用户自己定义命名空间中的类");
Console.ReadLine();
}
}
main方法
main方法是程序的入口处,C#程序中必须包含一个,而且是唯一的一个main方法,它也是一个类的成员,由于程序启动时,还没有创建类的对象,所以它必须是静态的,上面main方法的修饰符static表示main方法是一个静态方法,调用这个方法不能使用实例化对象,而是直接使用类名来调用,void表示这个方法没有返回值
static void Main(string[] args)
{
p2 n = new p2();
n.s1();
}
Console类的两个方法
C#环境下,在Console类中提供了两个输出字符串的方法:
Write方法:Console.Write不输出换行
WriteLine方法: Console.WriteLine输出换行
Console.WriteLine:
标识符和关键字
标识符就是系统或者用户自定义的类、方法或者变量的名称,上文的Console、namespace1、s1等都是标识符,标识符的书写有几个规则:
一是:标识符只能由数字、字母和下划线组成;
二是:它必须以字母或者下划线开头;
三是:它不能是关键字,所谓的关键字就是系统的保留字,上文的static、void和public都是关键字,这些关键字不能够命名标识符;
代码注释块
为了方便写的代码具有可读性,代码注释块是经常使用的,编译器在编译程序时不执行注释块中的内容,注释块有三种:
一是:单行注释,使用“//”;
二是:多行注释,使用“/*...*/”;
三是:给代码段添加说明,使用“///”给一段代码来添加说明
C#Windows窗体工作环境
C#工作界面有:工具箱、资源管理器、属性窗口和程序代码编辑区、菜单和工具栏等。
工具箱:
左侧的工具箱存放着多种控件,点击上面的Auto Hide图标,自动隐藏图标,工具箱就会固定到环境的左侧,可以更方便我们来取用各种控件:
控件按不同类别进行分类存放,Common Controls公共控件、Components组件、Printing打印和Dialogs对话框等多种类别:
资源管理器:
解决方案资源管理器在右上侧,解决方案名称会根据所创建的项目来产生,由于是Windows窗体应用程序,因此会产生跟窗体有关的程序,即与Windows窗体有关的文件:
属性窗口:
属性窗口提供窗体对象或控件的属性设置,通过属性窗口提供两种功能,即属性和事件。
你可以通过属性窗口,对窗体和加入窗体上的一切控件进行设置,而且这些需要设置的属性可以按照一定的的顺序进行排列,如按分类排序Categorized、按字母顺序Alphabetical、属性Properties和事件Events:
属性列表由相关属性名称组成,控件不同属性列表也不相同,当鼠标点击某一特定属性行时,则在属性窗口的最下方会简单提示该属性值所代表的意义,如BackColor下面就有提示信息The background color of the component,表示组件的背景颜色:
你可以通过点击事件Events来使属性窗口按事件分类来显示:
(1)单击字母顺序Alphabetical按钮;
(2)单击事件Events按钮,目的为某个事件编写程序代码;
(3)用鼠标点击某一事件,双击即进入程序代码编辑区,创建了此事件的程序段;
下面是对Click事件进行双击,进入程序代码编辑区,Click事件的简单提示Occurs when the component is clicked,就是当组件被单击的时候发生:
程序代码编辑区:
以Windows窗体来编写应用程序时,必须针对某一个控件对象来编写,如果要让窗体单击时执行一些操作,就得进入程序代码编辑区。
(1)选择窗体,找到属性窗口的Click事件:
(2)Click右侧显示Form1_Click事件,表示要在窗体上单击来触发的事件处理程序:
(3)用鼠标双击Form1_Click,则进入了程序代码编辑窗口,框住的区域是新加入的Form1_Click事件:
创建窗体界面
在窗体上加入一个label控件和两个button控件,label控件负责你想要显示的内容,button控件一个是用来触发事件让label控件显示相应内容,另一个是触发事件让程序关闭。
先介绍几个常用的控件:
Label控件:它是标签控件,可以用来显示窗体界面上的文字
Textbox控件:这是个文本框控件,它能够让用户输入内容
Button控件:我们最熟悉的按钮控件,单击后可以触发某个事件过程,我们程序执行的触发多数靠它来完成
无论是窗体还是控件,在windows窗体应用程序中都是对象,所以都可以对这些对象进行属性的设置。
Form1:设置text和font属性,text可以让窗体在标题栏显示相应的内容,font可以设置字体的颜色
Label:设置name和forecolor属性,name是标签的名称,方便我们在程序中使用它,forecolor是标签的前景色
Button:设置name和text属性,name是给button按钮一个名称,text可以在button按钮上显示相应的内容
在窗体上加入控件:
加入控件有两种方法:
①你可以通过双击控件进行添加,控件自动显示到窗体的左上方;
②你也可以对控件进行拖拽到窗体的任意位置上;
当你用上面的方法将控件放到窗体上后,可以对控件进行布局的排列和对齐:
①可以通过窗体上的参考控制线进行对齐和排列;
②也可以利用布局工具栏;
设置控件外观:
每个加入到窗体中的控件都有各种各样的属性,在属性窗口以categorized分类进行显示,分类显示可以将性质相近的属性排列在一块,方便进行查找和定位:
与控件外观有关的属性有backcolor背景色、borderstyle框线样式、font字体、forecolor前景色,它们都在appearance外观下:
对label1标签控件进行设置,将borderstyle框线样式设置为单线,效果如下:
你也可以鼠标点击窗体后,对窗体上的字体大小等进行设置,包括窗体上的任何控件上的字体:
你也可以为label1选择字体颜色,在属性窗口对forcolor前景色进行相应色彩设置,色彩当中提供了三种,我们可以选择custom自定义样式,这里面的色彩比较多:
设置控件属性:
你还可以对控件的name和text属性进行更改,每个加入到窗体的控件都有name属性,当我们在编写程序代码时可以用到它的name名称,就是来识别不同的控件,这里面窗体的name是form1,上面的两个button控件的name分别是button1和button2,为了编写代码方便我们通常将name设置成符合实际意义的名称,而另一个text属性易与name相混淆,虽然他们看着很类似,其实它们有着本质上的区别,一个属于展现给用户的内容,一个是后台识别的id,它们都是通过属性窗口进行设置修改的。
Text属性设置:点击要修改text属性的控件→在appearance下找到text属性→键入要显示的文字内容,下面是对button和label的text属性进行修改和设置:
name属性设置:点击要修改name属性的控件→在design下找到name属性→键入控件的名称,下面是对button的name属性进行了修改和设置,可以看到显示的内容没变,只是其表征身份的名称发生了改变,我们在编写代码时用到的是“btnShow”,而不是“单击”:
编写程序代码并运行:
对控件的基本设置完成以后,我们就要加入程序代码,实现按钮的单击和结束功能,我们要实现的有两个功能:
1、点单击按钮,让label控件显示相应内容,也就是改变label的text属性
2、点结束按钮,结束并关闭程序
而上面这种通过程序代码响应或者处理的操作就是事件处理程序event handlers,其语法格式为:
private void 控件名称_事件(object sender,EventArgs e)
{
//程序语句
}
如果通过单击button按钮来实现,则语句为:
private void btnShow_Click(object sender,EventArgs e)
{
//程序语句;
}
这里面每个事件处理程序都有两个参数,sender提供触发事件的对象引用,e用来传递要处理事件的对象。
编写实现第一个功能的代码,双击button按钮进入代码编辑区,可以看到我们在编写代码时系统会有自动提示,这就大大方便了我们写代码的效率,从下拉列表中选择想要的对象或者属性即可:
最后完整的代码是:
再来编写实现第二个功能的程序代码,同理进入到窗体界面双击button结束按钮:
进入到了我们第二功能代码的编写区域:
这里面的按钮我们并没有为它重新命名,而是我们在创建按钮时使用自动创建的名称tutton2,这不会影响我们对程序代码的编写:
运行程序“Ctrl+F5”,点击“单击”按钮后label出现了相应的内容,单击结束则退出程序:
结语:有感兴趣的关注、收藏、点赞、转发
相关推荐
- 无畏契约手游测试资格获取方法,安卓IOS下载教程
-
《无畏契约:源能行动》是拳头游戏与腾讯光子工作室联合开发的《无畏契约》正版手游,延续了端游的5v5战术射击核心玩法,并针对移动端进行了操作优化。游戏以快节奏的爆破模式为核心,融合角色技能系统、经济策略...
- 微软正在测试重新设计的Office图标 但您现在可以提前下载重制版本
-
今年4月,有消息称微软正在征求用户对一组Office图标7年来首次重制版的看法(上一次重制是在2018年末)。现在,有人决定自己动手,制作了一套微软的高分辨率图标包与用户共享以获得反馈。Reddi...
- AB Download Manager:一款可以替代IDM的开源桌面下载管理器
-
软件介绍IDM下载器大家应该多少都知道一点,如果不知道的话只能自行百度了,但是IDM本身是需要付费的,而今天推荐的这款软件,在下载方面是和IDM差不多的,大概有90%的相似度,感兴趣的朋友可以体验一下...
- 《夺宝奇兵》PS5光盘仅20G:其余需联网下载
-
来源:游民星空【《夺宝奇兵》PS5光盘仅20G:其余需联网下载】据游戏测试账号“DoesItPlay1”在推特发布动态表示,《夺宝奇兵:古老之圈》PS5实体光盘只存储了20GB的游戏数据,其余内容需要...
- 薇姐聊诗词7:诗词创作韵部查询及检测工具
-
薇姐聊诗词7:诗词创作韵部查询及检测工具。·1、诗词创作中所用韵脚哪里找?平水韵:106部,分平声30部、上声29部、去声30部、入声17部,反映中古汉语语音体系。新韵:(中华新韵)14部,以普通话为...
- 阿里云国际站:怎样模拟高并发测试场景?
-
本文由【云老大】TG@yunlaoda360撰写一、使用JMeter安装JMeter:从JMeter官网下载并安装JMeter。创建测试计划:打开JMeter,创建一个新的测试计划。添加线程组...
- Android Studio 新增 AI 驱动的测试和更智能的崩溃诊断功能
-
随着GoogleI/O2025大会的落幕,值得注意的是,谷歌在AndroidStudio中引入了几项新功能,旨在改善Android应用程序的开发流程。最新版本集成了更先进的AI工...
- 如何在本地测试PHP源码的网站
-
通常,我们测试自建网站或从网上获取的PHP源码时,若直接上传到服务器,出错后再修改会很麻烦,因此一般会选择先在本地电脑上进行测试。1、先下载喜欢的源码,很多网站提供下载,如源码论坛等。这些源码是现成...
- 显卡性能测试工具3DMark06的应用教程
-
显卡作为计算机的重要组成部分,也是主要的输出设备。在计算机系统中,图形处理性能的瓶颈往往在于显卡。若要评估显卡性能,用户可以借助专业的检测工具3DMark,判断显卡是否能满足当前需求,或者是否需要...
- Downie4 安装教程(轻松获取视频素材)
-
效果一、准备工作下载软件链接:http://www.macfxb.cn二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功三、运行测试1、打开软...
- 如何使用瑞星杀毒软件的网速测试功能
-
下面为大家介绍瑞星杀毒软件的网速测试功能。1、打开安全工具,找到网速测试,点击下载后开启。2、打开网速测试页面,点击开始测试按钮。3、测试结束后,你就能知晓自己的网速了。(9744667)...
- 阿里云国际站:如何测试服务器真实带宽?
-
本文由【云老大】TG@yunlaoda360撰写基于命令行工具测试iperf/iperf3:服务器端:在服务器上安装iperf后,运行iperf-s或iperf3-s启动服务端,...
- CentOS Docker 安装
-
Docker支持以下的64位CentOS版本:CentOS9(stream)更高版本...必须启用centos-extras仓库,该仓库默认启用,如果您禁用了它,需要重新启用。使用官...
- Fast YOLO:用于实时嵌入式目标检测(附论文下载)
-
关注并星标从此不迷路计算机视觉研究院公众号ID|ComputerVisionGzq计算机视觉研究院专栏作者:Edison_G目标检测被认为是计算机视觉领域中最具挑战性的问题之一,因为它涉及场景中对象分...
- aigc检测报告与查重监测报告
-
哈喽学妹学弟们!最近是不是都在忙着写论文呢?记得当初我写论文的时候,也被AIGC检测报告和查重监测报告搞得晕头转向。不过经过我的一番摸索,终于搞清楚了它们之间的区别和联系。来来来,学姐今天就来给你们传...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- httperror403.14-forbidden (63)
- logstashinput (65)
- hadoop端口 (65)
- dockernetworkconnect (63)
- esxi7 (63)
- vue阻止冒泡 (67)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)