浅学C#
衡与墨
福建98生人,爱好GO、Java、JS、TS、Python、Rust、C语言,前后端均精通,熟悉linux、docker、k8s使用,擅长Vue、Java Web开发、GO 微服务和web开发,兴趣广泛,爱好开源,目标是2025年前具有百万级别系统的架构师能力,我是一个追求纯粹的程序员,欢迎工作邀请
展开
-
浅学C#(1)——什么是.NET
.NET框架.NET念作 dot net.NET 首先是一个开发平台 它定义了一种公用语言子集 Common Language Subset CLS ,这是一种为符合其规范的语言与类库之间提供无缝集成的混合语。 .NET统一了编程类库,提供了对下一代网络通信标准,可扩展标记语言 Extensible Markup Language XML 的完全支持,使应用程序的开发变得更容易,更简单。Mic...原创 2019-01-18 14:41:47 · 526 阅读 · 0 评论 -
浅学C#(24)——线程互斥、Mutex类
用Mutex类实现互斥WaitOne public virtual bool WaitOne( )分配互斥体访问权,该方法只向一个线程授予对互斥体的独占访问权ReleaseMutex如果一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,直到第一个线程用该方法释放该互斥体bool createdNew; Mutex mutex=new Mutex( false, ...原创 2019-01-26 12:57:48 · 621 阅读 · 0 评论 -
浅学C#(25)——任务Task
任务Task任务在后台使用ThreadPool在安排需要完成的工作时,任务提供了非常大的灵活性。可以定义连续的工作,在一个任务完成后需要执行什么工作可以在层次结构中安排任务,例如父任务可以创建新的子任务,这可以创建一种依赖关系启动任务可以使用TaskFactory类或Task类的构造函数和Start()方法static void TaskMethod(){ Console....原创 2019-01-26 13:04:26 · 548 阅读 · 0 评论 -
浅学C#(26)——异步委托
异步委托委托使用线程池完成异步任务轮询等待句柄使用与IAsyncResult相关的等待句柄使用AsyncWaitHandle属性可以访问等待句柄,这个属性返回一个WaitHandle类型的对象,可以等待委托线程完成任务异步回调...原创 2019-01-26 13:10:31 · 219 阅读 · 0 评论 -
浅学C#(8)——委托
委托委托是函数的封装,它代表一类函数,它们都符合一定的签名:拥有相同的参数列表和返回值类型。同时,委托也可以看成是对函数的抽象,是函数的”类”。此时,委托的实例将代表一个具体的函数。一个委托声明、定义了一个引用类型可以用来封装具有一定签名的方法。一个委托实例可用来封装一个静态或实例方法。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和...原创 2019-01-22 10:40:20 · 366 阅读 · 0 评论 -
浅学C#(9)——多播、事件
多播一次委托可以调用多个方法通过+和-运算符可以实现多播的增加或减少using System;class SimpleClass{ public class WorkerClass { public int InstanceMethod(int nID, string sName) { int retval = ...原创 2019-01-22 10:42:00 · 424 阅读 · 0 评论 -
浅学C#(10)——彼得的故事(1)
彼得的故事1、从前,在南方一块奇异的土地上,有个工人名叫彼得,他非常勤奋,对他的老板总是百依百顺。但是他的老板是个吝啬的人,从不信任别人,坚决要求随时知道彼得的工作进度,以防止他偷懒。但是彼得又不想让老板呆在他的办公室里站在背后盯着他,于是就对老板做出承诺:无论何时,只要我的工作取得了一点进展我都会及时让你知道。彼得通过周期性地使用“带类型的引用”“回调”他的老板来实现他的承诺,如下:usin...原创 2019-01-22 10:47:14 · 400 阅读 · 0 评论 -
浅学C#(11)——彼得的故事(2)
6、为了能向所有人报告工作,可以使用事件把彼得的Worker类的的委托字段做成public有无意识的副作用。如果彼得的老板不耐烦了,也可以决定自己来激发彼得的委托(真是一个粗鲁的老板):if( peter.completed != null ) peter.completed();彼得不想让这些事发生,他意识到需要给每个委托提供“注册”和“反注册”功能,这样监听者就可以自己添加和移除委托,但...原创 2019-01-22 10:49:19 · 275 阅读 · 0 评论 -
浅学C#(27)——数据库
ADO.NET概述ADO ( ActiveX Data Objects ).NET是与C#和.NET Framework一起使用的类集的名称,用于以关系型的、面向表的格式访问数据ADO是一个COM组件库ADO.NET的主要特点不依赖于连续的活动连接使用数据命令执行数据库交互使用数据集缓存数据数据集独立于数据源数据保持为XML通过架构定义数据结构ADO.NET对象模型的结构...原创 2019-01-27 12:51:43 · 920 阅读 · 0 评论 -
浅学C#(28)——泛型
泛型.net泛型与C++模板对于C++模板,用特定的类型实例化模板时,是需要模板的源代码的泛型不仅是C#语言的一种结构,而且是CLR定义的即使泛型类是在C#中定义的,也可以在Visual Basic中用一个特定的类型实例化该泛型在C++中,编译器可以检测出在哪里使用了模板的某个特定类型,例如,模板B的A类型,然后编译需要的代码,来创建这个类型。而在C#中,所有操作都在运行期间进行性能...原创 2019-01-27 12:55:35 · 355 阅读 · 0 评论 -
浅学C#(29)——C#的改进:自动属性、对象初始化器、类型推理、Lambda、yield等
C#语言的改进自动属性利用自动属性,可以用简化的语法声明属性,C#编译器会自动添加未键入的内容编译器会声明一个用于存储属性的私有字段,并在属性的get和set块中使用该字段public int MyProp{ get; set; }使用自动属性时,只能通过属性访问数据,不能通过底层的私有字段访问,因为我们不知道底层私有字段的名称自动属性必须包含get和se...原创 2019-01-28 10:45:42 · 564 阅读 · 0 评论 -
浅学C#(12)——实例构造函数、静态构造函数、析构函数
实例构造函数[构造函数修饰符] 标识符([参数列表] )[ : base ( [参数列表] ) ] [ : this ( [参数列表] ) ]{构造函数语句块}构造函数修饰符有public、protected、internal、private构造函数可以重载:base表示调用直接基类中的实例构造函数:this调用该类本身所声明的其他构造函数构造函数语句块既...原创 2019-01-23 11:34:16 · 1585 阅读 · 0 评论 -
浅学C#(13)——运算符重载、隐式类型转换
运算符重载可以重载的运算符一元操作符 +, -, !, ~, ++, --, true, false二元操作符 +, -, *, /, %, &, |, ^, <<, >>, ==, !=, >, <, >=, <=赋值运算符 +=, -=, *=, /=, &gt原创 2019-01-23 11:41:25 · 960 阅读 · 2 评论 -
浅学C#(23)——线程同步、语句原子化、同步需要注意的问题、竞态条件
线程同步所谓同步,是指在某一时刻只有一个线程可以访问变量当一个线程写入一个变量,同时有其他线程读取或写入这个变量时,就应同步变量高级语言程序中的一条语句在最后编译好的汇编语言机器码中可能被翻译为多条语句,在操作系统调度时被划分到不同时间片中只要一条C#语句被翻译为多个本地代码命令,线程的时间片就有可能在执行该语句的进程中终止读“垃圾”数据不正确写入在C#中处理同步通过对指定对象...原创 2019-01-26 12:53:52 · 403 阅读 · 0 评论 -
浅学C#(4)——总体框架、关键字、命名规则、代码规范
总体框架Hiker.cs 类名不一定等于文件名using System; //每一个程序必须在开头使用这一语句public sealed class HitchHiker { public static void Main()//程序从Main开始执行 { int result; result ...原创 2019-01-25 10:07:30 · 420 阅读 · 0 评论 -
浅学C#(22)——多线程技术
多线程技术程序中的多任务在使用文字处理软件时,用户在输入文字的同时,软件能同步进行拼写检查而不需要用户的等待多线程工作方式单处理器计算机上的并发性抢先式多任务处理时间片轮转进程的概念进程是应用程序的一次动态执行,包括程序代码在内存中的映像以及进程所需的系统资源System.Diagnostics下的Process类可以访问和管理当前系统中的进程线程的概念线程包括堆栈、CPU...原创 2019-01-26 12:48:56 · 307 阅读 · 0 评论 -
浅学C#(2)——CLR的概念和功能
CLR的概念和功能CLR是一个可以由多编程语言使用的运行时,CLR的核心功能:内存管理,程序集加载,安全性,异常处理,线程同步等等。可以被很多属于微软系列的开发语言使用。事实上,在运行时,CLR根本不关心开发运用什么语言编写源代码,这意味着选择编程语言的时候,应该选择最容易表达自己意图的语言。只要编译器是面向CLR的即可。.NET被编译两次,第一次编译很慢(由源代码---->>...原创 2019-01-18 14:46:00 · 1666 阅读 · 0 评论 -
浅学C#(3)——C#的优点和缺点
C#的优势和缺点转自 xuld https://www.cnblogs.com/xuld/p/3434659.htmlC#优点1: 相比java,有更先进的语法体系由于C#是后生,所以其很多语法都是其它语言的改进。作为一个商业产品,C++用户是C#的首要目标,所以它充分照顾到了C++用户的习惯。从整体看,C#语法比java更优雅。这里java粉丝就可能会站出来,说java也有好的地方----...转载 2019-01-18 14:48:15 · 8377 阅读 · 0 评论 -
浅学C#(15)——枚举转换、使用Convert进行转换、常量、结构、接口
枚举转换隐式枚举转换只允许将0转换为枚举类型变量Color a; a=0;显式枚举转换Color a=Color.red; int x=(int) a;enum Color{ red, green=4, blue}class Test{ static void Main() { Color a = Color.green; ...原创 2019-01-24 10:59:46 · 1352 阅读 · 0 评论 -
浅学C#(16)——Winform程序设计之Button、TextBox、RadioButton、CheckBox、GroupBox、RichTextBox
WinForm程序设计窗体单文档界面写字板应用程序多文档界面Word、Excel资源管理器样式界面Windows资源管理器Button常用属性Text按钮上显示的文本包含在Text属性中。如果文本超出按钮宽度,则换到下一行。可以包含访问键。FlatStyle如果把按钮样式设置为Popup,则按钮就显示为平面,直到用户把鼠标指针移动到它上面为止。此时,按钮会弹出,显...原创 2019-01-24 11:05:58 · 1935 阅读 · 0 评论 -
浅学C#(17)——Winform程序设计之ListBox、CheckListBox、ComboBox、ListView、ImageList、TabControl、PictureBox...
ListBox常用属性SelectedIndex表示选中选项的基于0的索引,若选中多项,则是第一项的索引ColumnWidth在包含多个列的列表框中指定列的宽度Items包含列表框中的所有选项MultiColumn获取和设置列表框中列的数目SelectedIndices列表框中选中的多项基于0的索引集合SelectedItem指选中的选项。若 选中多项,则指第一项Sel...原创 2019-01-24 11:16:32 · 1396 阅读 · 0 评论 -
浅学C#(18)——Winform程序设计之Timer、菜单栏、工具栏、状态栏、(打开文件、保存文件、字体、颜色)对话框
Timer可以按照用户指定的时间间隔触发事件常用属性Enabled 指定时钟是否处于运行状态InterVal 指定时钟控件触发时间的时间间隔Tick事件当时钟处于运行状态时,每当到达指定时间间隔,就会触发该事件菜单栏ToolStripMenuItem常用属性ShortcutKeys获取或设置与 ToolStripMenuItem 关联的快捷键。Image获取或设置...原创 2019-01-24 11:20:42 · 2664 阅读 · 0 评论 -
浅学C#(5)——规则与锯齿状二维数组、foreach、动态数组
规则与锯齿状二维数组的声明、创建、初始化//规则二维数组Point[,] ps = new Point[4, 5];//锯齿二维数组Point[][] ps2= new Point[4][];//初始化ps2[0] = new int[3];ps2[1] = new int[4];for (int i = 0; i < ps.GetLength(0); i++){ ps...原创 2019-01-20 09:56:47 · 469 阅读 · 0 评论 -
浅学C#(6)——面对对象编程基础、属性和字段、修饰符
面向对象编程基础属性及属性的修饰符对类的用户而言,属性值的读写与字段域语法相同,对编译器来说,属性值的读写是通过类中封装的特别方法get和set访问器实现的属性修饰符和方法修饰符相同,包括new、static、virtual、override等get访问器的返回类型与属性类型相同set访问器没有返回值,但它有一个隐式的值参数,名称为value,value的类型和属性类型相同访问器可以...原创 2019-01-20 10:01:35 · 331 阅读 · 4 评论 -
浅学C#(19)——多文档界面(MDI)、鼠标键盘事件
多文档界面(MDI)创建MDI父窗体IsMDIContainer属性设置为true根据需要可将WindowState属性设置为Maxmized创建一个”窗口“顶级菜单项,用于跟踪打开的MDI窗口将菜单的MdiWindowListItem设置为”窗口“菜单项创建MDI子窗体右击项目-》添加-》Windows窗体确定活动的MDI子窗体一个MDI应用程序可以有同一个子窗体的多个...原创 2019-01-25 09:37:52 · 952 阅读 · 0 评论 -
浅学C#(20)——流(1)
流流是串行化设备的抽象表示输出流向某些外部目标写入数据输入流用于将数据读到程序可以访问的内存或变量中用于文件操作的类File提供用于创建、复制、删除、移动和打开文件的静态方法并协助创建FileStream对象Directory提供用于创建、复制、删除、移动和打开目录的静态方法Path对包含文件或目录路径信息的字符串执行操作FileInfo提供创建、复制、删...原创 2019-01-25 09:43:31 · 242 阅读 · 0 评论 -
浅学C#(21)——流(2)读取写入文件、串行化对象、监控文件
FileStream对象表示在磁盘或网络路径上指向文件的流,提供了在文件中读写字节的方法构造方法public FileStream ( string path, FileMode mode )public FileStream ( string path, FileMode mode, FileAccess access )Read 用于只读Write ...原创 2019-01-25 09:50:16 · 469 阅读 · 0 评论 -
浅学C#(7)——索引器
索引器使用索引器的目的是为了能够像数组一样访问类中的数组型的对象通过对对象元素的下标进行索引,可以访问指定的对象索引器类似于属性,不同的是索引器有索引参数索引参数可以使用任何数据类型,但常用的是uint、int、ushort、short、string等不能使用foreach循环访问索引器using System;class ArrClass //没有索引器的类{ pri...原创 2019-01-21 10:46:25 · 271 阅读 · 0 评论 -
浅学C#(14)——ref引用参数、out输出参数、params参数数组
方法的参数、参数数组params的使用、值参数编译器为值参数分配存储空间,然后将对应的实参的值拷贝到形参中对形参的改变不会影响到实参引用参数引用参数与实参变量共用一个存储单元ref仅对其后的参数有效,不能应用于整个参数表调用方法时,也用ref修饰实参变量实参的类型与形参类型必须完全匹配实参必须是变量,不能是常量或表达式ref参数在调用前必须明确赋值输出参数只能...原创 2019-01-23 11:45:41 · 445 阅读 · 0 评论