学习C#的起点,人人都能认识C#,学会编程一点不难
bigegpt 2024-10-12 05:29 15 浏览
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出现了相应的内容,单击结束则退出程序:
结语:有感兴趣的关注、收藏、点赞、转发
相关推荐
- Redis集群对比:主从复制、哨兵模式、Cluster一文看懂所有优缺点
-
在分布式系统中,Redis作为高性能的内存数据库,其集群方案的选择直接影响到系统的稳定性、可用性和扩展性。本文将全面对比Redis的三种主流集群方案:主从复制、哨兵模式和Cluster模式,帮助开发者...
- redis的主从复制,读写分离,主从切换
-
当数据量变得庞大的时候,读写分离还是很有必要的。同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能。redis提供了一个master,多个sl...
- # Redis 入门到精通(九)-- 主从复制(3)
-
#Redis入门到精通(九)--主从复制(3)##一、redis主从复制-常见问题(1)###1、伴随着redis系统的运行,master的数据量会越来越大,一旦master重启...
- redis - 主从复制(Redis主从复制时序图)
-
1引言在上一篇文章中,我们了解了Redis两种不同的持久化方式,Redis服务器通过持久化,把Redis内存中持久化到硬盘当中,当Redis宕机时,我们重启Redis服务器时,可以由RDB文件或AO...
- # Redis 入门到精通(九)-- 主从复制(2)
-
#Redis入门到精通(九)--主从复制(2)##一、redis主从复制--数据同步阶段注意事项###1、数据同步阶段master说明1)如果master数据量巨大,数据同步阶段应...
- Redis主从复制(redis主从复制主节点挂了)
-
介绍Redis有两种不同的持久化方式,Redis服务器通过持久化,把Redis内存中持久化到硬盘当中,当Redis宕机时,我们重启Redis服务器时,可以由RDB文件或AOF文件恢复内存中的数据。不过...
- 深入解析 Redis 集群的主从复制实现方式
-
在互联网大厂的后端开发领域,Redis作为一款高性能的内存数据库,被广泛应用于缓存、消息队列等场景。而Redis集群中的主从复制机制,更是保障数据安全、实现读写分离以及提升系统性能的关键所在。今...
- Redis主从架构详解(redis主从架构高可用如何实现)
-
Redis主从架构搭建Redis主节点配置创建主节点目录(/opt/redis-master),复制redis.conf到该目录下,redis.conf配置项修改#后台启动daemonizeyes...
- 抖音“四大包塘战神”:承包了全网的快乐
-
在抖音钓鱼垂类领域,"包塘战神"军团正掀起一场黑色幽默风暴。空军华、大表坑、李赔光、透心良四位创作者,以承包鱼塘为舞台,用连续翻车的钓鱼直播构筑起流量奇观。当钓鱼佬在抖音集体转型喜剧人...
- ORACLE 11G RAC 安装-通过VM配置共享磁盘
-
简介:在自己的电脑上通过VM软件搭建Oracle11GRAC,通过修改VM的参数文件来实现磁盘共享!目标:搭建RAC环境实现:使用VMwareWorkstation8.0.0+ORACLE...
- Linux操作系统安全配置(linux系统安全配置包括)
-
一、服务相关命令systemctlenable服务名#开机自启动systemctldisable服务名#禁用开机自启动systemctlstop服务名#停止服务systemctls...
- 关于Linux性能调优中网络I/O的一些笔记
-
写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,i...
- 从 Sonatype Nexus Repository Manager 迁移到 Artifactory
-
1.Nexus1.1下载下载链接:https://help.sonatype.com/repomanager3/product-information/download/download-archiv...
- Ubuntu20安装zabbix5.0企业监控系统亲测教程
-
前言示例主机:zabbix10.0.100.10,将安装在UbuntuServer上教程说明:因使用官方教程无法安装成功,所以本教程与官方教程有所不同安装前提:已安装UbuntuServer2...
- Linux内核设计与实现—进程管理(linux内核程序设计)
-
进程进程就是处于执行期的程序(目标码存放在某种存储介质上)。进并不仅仅局限于一段可执行程序代码(Unix称其为代码段,textsection)。通常进程还要包含其他资源,像打开的文件,挂起的信号,...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)