C# - 技术教程文章

C# - 多线程之 异步编程【代码】【图】

异步编程同步编程,请求响应模型,同步化、顺序化、事务化。异步编程,事件驱动模型,以 Fire and Forget 方式实现。异步编程模式 ?-§-?异步编程模型 (APM) 模式: IAsyncResult 模式,异步操作需要 Begin 和 End 方法; ?-§-?基于事件的异步模式(EAP):事件、事件处理程序委托类型和 EventArg 派生类型; ?-§-?基于任务的异步模式(TAP):推荐模式,.NET Framework 4 引入,基于 System.Threading.Tasks 命名空间,利用一种方...

c#转载的

C#做项目时的一些经验分享1、对于公用的类型定义,要单独抽取出来,放到单独的DLL中。2、通过大量定义interface接口,来提高模块化程度,不同功能之间通过实现接口来面向接口编程。3、如果项目中存在很多非常相似,但是又存在一些差异的类,最好的办法是进一步抽象,得到它们的共同基类,将相同点放到基类中实现,然后通过派生类实现差异。使用方根据实际情况决定自己要使用的类。4、项目中,经常会遇到一些全局范围内有且只有一个...

C# 特性详解(转)【代码】

特性(attribute)是被指定给某一声明的一则附加的声明性信息。在C#中,有一个小的预定义特性集合。在学习如何建立我们自己的定制特性(custom attributes)之前,我们先来看看在我们的代码中如何使用预定义特性。 using System; publicclass AnyClass {[Obsolete("Don‘t use Old method, use New method", true)]staticvoid Old( ) { } staticvoid New( ) { }publicstaticvoid Main( ){Old( );} } 我们先来看一下上面这个例子,在...

<C#任务导引教程>练习七

//55,类的声明示例using System;class Date{ public int year; public int month; public int day; public void print() { Console.WriteLine("{0}/{1:D2}/{2:D2}", year, month, day); }}class Program{ static void Main() { Date t = new Date(); Console.Write("请输入年:"); t.year = Convert.ToInt32(Console.ReadLine()); Console.Write("请输入月:...

C# JArray与JObject 的使用

STEP1、using Newtonsoft.Json.Linq; STEP2 如何获取json里的某个属性(节点)值,对其删改,新增 ?12345678910111213141516171819202122232425262728293031323334//2.1 数组用JArray加载 stringjsonText = "[{‘a‘:‘aaa‘,‘b‘:‘bbb‘,‘c‘:‘ccc‘},{‘a‘:‘aa‘,‘b‘:‘bb‘,‘c‘:‘cc‘}]"; varmJObj = JArray.Parse(jsonText); //需求,删除列表里的a节点的值为‘aa‘的项 IList<JToken> delList = newList<JToken...

C#图解教程学习笔记——委托【图】

一、委托概述委托和类一样,是用户自定义类型,也是引用类型。但类表示的是数据和方法的集合,而委托持有一个或多个方法,以及一系列预定义操作。 可以通过以下操作步骤来使用委托:(1)声明一个委托类型。委托声明看上去和方法声明相似,只是没有实现块。(2)使用该委托类型声明一个委托变量。(3)创建委托类型的对象,把它赋值给委托变量。新的委托对象包括指向某个方法的引用,这个方法和第一步定义的签名和返回类型一致。(...

C#基础

.net/dotnet:一般指.NetFramework框架,一种平台,一种技术。c#(sharp):一种编程语言,可以开发基于.net平台的应用。Java:是一种技术,又是一门语言;.net应用  1.桌面应用程序 Winform应用程序开发  2.Internet应用程序 ASP.NET/WebService(网站)  3.手机开发 wp7(嵌入式)  4.wince   架构:    C/S:客户机(Client)/服务器模式(Server)【桌面应用程序】...

(C#基础) ref 和out练习【代码】

对于C#中这两个关键字的用法,常常混淆,有点不清楚,今天又一次看到。遂把它们都记录下来,希望能有所用。这些都是他人写的,我只是搬过来一次,加深印象。 代码 using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace dazilianxi.wenjian {publicclass MoTes:IEnumerable<SanWei>{privatereadonly List<SanWei> _motes;public MoTes(){_motes = new List<SanWei>();}publicvoid A...

C#反射复习

反射能够对数据集中的元数据进行访问。以前当代码编译成机器语言时,关于代码的元数据(例如类型和方法名)都会被丢弃,但当C#编译成CIL时,它会维持关于代码的大部分元数据。利用反射可以找出满足条件的元数据。合理利用反射可以降低代码的耦合性 System.Type访问元数据主要有Type.Name、Type.IsPublic、Type.BaseType等等 typeof、GetType获取数据类型 各种info与get方法访问元数据创建类的实例例子:namespace ConsoleApp1{ ...

C#自定义控件在添加引用后不显示在工具箱的解决方法【图】

先说一些背景:  在开发C#项目时,发现很多控件存在复用的情况,控件的属性都是要设置成一样的,我就想,能不能设置一个类来存放这个控件,这样我每次用的时候直接加一些特殊的操作就可以了,不需要再次设置控件属性。  搜索一段时间,自定义控件是可以满足需求的,它可以开发继承现有控件的自定义控件,这样我就可以封装起来做自己的控件库了。  在完成自定义控件后,我根据MSDN的Demo指导,在另一个项目中添加了这个引用(...

C#7.0新语法【代码】【图】

一、out输出参数在以前使用out输出参数的时候,必须先定义变量,然后才能使用,例如:先定义一个方法,方法参数是out类型的输出参数:1 private void DoNoting(out int x, out int y) 2 { 3 x = 1; 4 y = 2; 5 }以前版本的写法:1 // 必须先定义i、j,才能使用out参数 2 int i = 0; 3 int j = 0; 4 this.DoNoting(out i, out j); 5 Console.WriteLine($"i+j={i+j}"); 在C#7.0中,可以不用先定义,就能够直接使用了:1 th...

C# static成员的构造顺序

熟知的几个原则1.static字段初始化先于static构造函数2.static字段按顺序初始化3.static字段和static构造函数只执行一次 public class Foo { public static Foo Instance = new Foo(); public static int Number=6; public Foo() { Console.WriteLine(Number); } }class Program { static void Main(string[] args) { Console.WriteLine(Fo...

C#取汉字首字母,汉字全拼【代码】【图】

使用类库为https://gitee.com/kuiyu/dotnetcodes/tree/master/DotNet.Utilities/%E6%B1%89%E5%AD%97%E8%BD%AC%E6%8B%BC%E9%9F%B3取首字母 textBox2.Text = PinYin.GetCodstring(textBox1.Text);取汉字全拼EcanConvertToCh toCh = new EcanConvertToCh(); textBox3.Text = toCh.convertCh(textBox1.Text);效果原文:https://www.cnblogs.com/win32pro/p/12736638.html

学习c#老师布置得第一个作业

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _10._8{ class Program { static void Main(string[] args) { string bankea = ("您在A银行的存款为:");//赋值银行名称 float a = (1230.56f);//赋值存款 string bankeb = ("您在B银行的存款为:");//赋值银行名 ushort b = (600);//赋值存款 string ...

C#编程总结(三)线程同步【代码】【图】

C#编程总结(三)线程同步在应用程序中使用多个线程的一个好处是每个线程都可以异步执行。对于 Windows 应用程序,耗时的任务可以在后台执行,而使应用程序窗口和控件保持响应。对于服务器应用程序,多线程处理提供了用不同线程处理每个传入请求的能力。否则,在完全满足前一个请求之前,将无法处理每个新请求。然而,线程的异步特性意味着必须协调对资源(如文件句柄、网络连接和内存)的访问。否则,两个或更多的线程可能在同一时...

c# webapi swagger【代码】

如何配置swagger?在使用项目中,我们希望去查看我们的webapi的测试,那么我们是需要去有一个集成的测试的。步骤1.在nutget管理包中下载swagger包。2.这样会在App_start 文件夹中出现swaggerconfig.cs 和swaggerNet.cs, 这个时候就需要配置的时候了。3.取消下面的注释(swaggerconfig.cs) c.IncludeXmlComments(string.Format("{0}/bin/ThinkingSpace.XML", System.AppDomain.CurrentDomain.BaseDirectory)); 当然我们为了代码的模块...

(转)C#命名规范

C#命名规范 数据类型 数据类型简写 标准命名举例 Array arr arrShoppingList Boolean bln blnIsPostBack Byte byt bytPixelValue Char chr chrDelimiter DateTime dtm dtmStartDate Decimal dec decAverageHeight Double dbl dblSizeofUniverse Integer int intRowCounter Long ...

c#中@开头的变量名【代码】

在 C# 规范中, @ 可以作为标识符(类名、变量名、方法名等)的第一个字符,以允许C# 中保留关键字作为自己定义的标识符。如class @class {publicstaticvoid @static(bool @bool) {if (@bool)System.Console.WriteLine("true");elseSystem.Console.WriteLine("false");} } class Class1 {staticvoid M() {cl\u0061ss.st\u0061tic(true);} } 注意,@ 虽然出现在标识符中,但不作为标识符本身的一部分。因此,以上示例,定义了一...

C# 读写xml、excel、word、access【代码】

C# 读写xml、excel、word、access这里只是起个头,不做深入展开,方便以后用到参考读写xml,主要使用.net 的xml下的documentusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Xml;using System.Xml.Serialization;publicstaticvoid GetAreaCodes(string path,outstring[] areaCodes ,outstring[] pointCodes){if (File.Exists(path)){try{XmlDocument xml = new...

面试宝典之基本的C#面试问答

下文是125个基本的C#面试问答清单。这些面试问题简单、直接了当,涵盖了C#最基本的概念,大部分和面向对象的概念相关。所以如果你在准备C#面试,我建议你必须掌握这125个基本的C#面试问答来复习你的C#概念。那么现在来看看这125个基本的C#面试问答清单吧。1. 什么是C#?C#(发音”C sharp”)是一种简单、有别于传统的、面向对象、类型安全的编程语言。C和C++程序员很快就会熟悉它。C#中结合了高生产率的快速应用开发(RAD)语言。...

C#学习笔记_09_构造方法/函数【图】

09_构造方法/函数代码案例作用:构造函数主要是用来创建对象时为对象赋初值来初始化对象;总与new运算符一起使用在创建对象的语句中,例如A a=new A();特点:构造函数具有和类一样的名称;但它是一个函数,具有函数的所有特性,同一个类里面可以有多个参数不同的构造函数,也就是函数的多态;构造函数是在实例化类时最先执行的方法,通过这个特性可以给对象赋初值;构造函数没有返回值,也不能用void修饰,只有访问修饰符 (public&...

使用 EPPlus 封装的 excel 表格导入功能 (.net core c#)【代码】【图】

使用 EPPlus 封装的 excel 表格导入功能前言最近做系统的时候有很多 excel导入 的功能,以前我前后端都做的时候是在前端解析,然后再做个批量插入的接口我觉着这样挺好的,后端部分可以做的很简单(很偷懒的)但是因为各种各样的原因,最终还是需要做个专门的 excel导入 接口遇到的问题由于之前从来没有在后端部分处理过表格,所以我选择看一下同事的代码是怎么写的虽然我之前没写过相关的业务,但是直觉的认为这样写非常麻烦,那个 ...

从零开始写C# MVC框架之--- 项目结构【图】

框架总分2个项目:Web开发项目、帮助类项目 (ZyCommon、Zy.Utilities) 1、ZyCommon,是Web开发项目结构。新建一个空解决方案,再建Data、Service、ZyWeb解决方案文件夹,把数据层、接口服务层、Web层区分开 1.1、Data解决方案下----Zy.Xn.Model 数据模型项目,设计好System下 组织机构、菜单、角色、角色菜单、角色用户、用户实体类,Models是系统使用的一些DTO基类,比如ztree控件需要的一些实体字段,角色菜单...

c#基础知识第五节

数组的定义using System;class program{  static void Main(sting [ ] args)  {    //定义一个int类型的数组x    int [ ] x;    //指定数组x中有3个元素    x =new int [3]; //上面的两句合并成一句:int [ ] x=new int [3];    //设置第二个元素为1    x [0] =1; //设置第二个元素为3    x [1] =3;   //设置第二个元素为5    x [2] =5;   Console.W...

XXTEA 加密算法 C++ C#兼容版本号【图】

1.一个不错的可逆加密算法XXTEA之前无意中看到了TexturePacker 使用了XXTEA来加密图片资源。所以花了点时间来看了下XXTEA。一般有两种加密算法:1.像md5,SHA1,等hash算法,是不可逆的。一般数据库存的username和password就用这个。 2.本文所提到的XXTEA算法,是可逆的,有个key能够加密。安全方面的东西还蛮多的,说到key,还有什么public key, private key,我都还给老师了。忘光了。可逆加...

挖一挖C#中那些我们不常用的东西之系列(5)——FlagAttribute【代码】【图】

原文:挖一挖C#中那些我们不常用的东西之系列(5)——FlagAttribute  说到FlagsAttribute,源自前几天看到了一小段代码,大概意思就是根据航班政策来返回哪些配送方式是否可用,根据这些是否可用来隐藏或者开启界面的相关配送方式,如果大家订过机票可能知道配送方式有很多种,比如“无需打印行程单(PJN)”,“机场自取(Airport)”,“市内配送(CND)”,“快递(EMS)”等等。根据上面的逻辑就可以知道,配送方式是有两种状态,可...

C#知识点<4>【代码】

1\C# 运算符重载您可以重定义或重载 C# 中内置的运算符。因此,程序员也可以使用用户自定义类型的运算符。重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的。与其他函数一样,重载运算符有返回类型和参数列表。例如,请看下面的函数:publicstaticBoxoperator+(Box b,Box c){Box box =newBox();box.length = b.length + c.length;box.breadth = b.breadth + c.breadth;box.height = b.height + c....

C#中static void Main(string[ ] args)中的作用及解释

C#中static void Main(string[ ] args)中的作用及解释 static 表示方法是静态的就是说方法在程序被编译的时候就被分配了内存,使用的时候不用生成某个类型的对象,知道程序退出才释放。 void 表示方法没有返回值,就是方法没有renturn keyword。 main 是方法名,当然这种方法是特殊的方法。是Main()就是说是主函数。就是整个程序的入口,程序被编译后从这里開始运行。这也是main方法要是static的原因,由于在啥都没做的时候这个函...

c# 类的定义说明使用

class A{};class B { void F { A a = new A(); } }//在类B 的方法F 中创建了一个类A 的实例 class A {}class B: A {}//B继承了A 原文:http://www.cnblogs.com/xblydy/p/4338727.html

c# 编程学习(四)【代码】

逻辑AND(逻辑与)操作符(用&&表示)和逻辑OR(逻辑或) 操作符(用||表示)。这两个操作符统称条件逻辑操作符。只有作为操作数的两个布尔表达式都为 true。操作符&&和||都支持短路求值例如,假定操作符&& 的左操作数求值为 false,整个表达式的结果肯定是 false,无论右操作数的值是什么if 语句的语法如下所示(if 和 else 是 C#关键字):if ( booleanExpression ) statement-1; else statement-2; 如果booleanExpression(布尔表达式)求值...