自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黄海几吹夏

.Net 学习及问题解决积累

  • 博客(63)
  • 资源 (1)
  • 收藏
  • 关注

原创 日期,日志,表单,Cookie

js毫秒变日期方法 function ChangeDateFormat(cellval) { var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10)); var month = date.getMonth() + 1 < 10 ? "0...

2019-03-12 12:57:06 84

原创 异步编程实现带参数,有返回值和延迟的功能

public OperationResult Method(int parm1, int delayTime) { Func<int, int, OperationResult> updateData =(s,p)=> { Thread.Sleep(d); retur...

2019-12-31 15:19:34 190

原创 在删除大量文件时出现The Directory is not empty,IOException异常

/// <summary> /// 自定义删除文件夹(含删除内部文件及文件夹) /// 在删除大量的文件时,由于内部句柄没有被清理,产生The directory is not empty.异常 /// 使用该方法,减少异常出现的几率,但不能完全避免, 成功率(未测试)几乎100% /// 具体信息参见h...

2019-12-19 14:12:05 3526

原创 Web项目中创建IIS网站下创建虚拟目录网站

在web项目中使用DirectoryEntry类和ServerManager类创建IIS网站下创建虚拟目录网站需要解决的问题1、根据名称获取iis站点id2、判断是否存在3、不存在,则该站点下创建应用程序3、配置路径、名子,转为应用程序4、提交释放 /// <summary> /// 在指定站点下创建虚拟目录网站 ...

2019-11-29 11:46:37 854

原创 .Net Core 3.0 内置依赖注入:举例

本文根据蔚来汽车.Net 开发部罗霄老师的分享 进行整理,在这里声明,表示感谢。本文讲解如何使用.Net Core 3.0的内置依赖(Microsoft.Extensions.DependencyInjection),而不是使用第三方的依赖注入的插件。实例生命周期的形态: Transient:容器获取的实例都是全新创建的。使用方法:AddTransien...

2019-11-18 17:27:03 2159

原创 事件简单使用的步骤(不含泛型)

///声明事件 /// 1、声明一个委托 /// 2、声明一个事件 /// 3、引发事件的方法 /// 4、定义事件处理方法 ///使用事件 /// 1、实例化事件发布者 /// 2、实例化事件订阅者 /// 3、订阅事件 /// 4、触发...

2019-11-01 10:01:23 127

原创 1.7.5 数组类

创建数组 Array intArray1 = Array.CreateInstance(typeof(int), 5); for (int i = 0; i < 5; i++) { intArray1.SetValue(33, i); } ...

2019-09-29 15:52:54 90

原创 1.6.6 实现自定义索引操作符

我们先来看一个数组:int[] arr1 = {1, 2, 3};arr1[1] = 42;int x = arr1[2];我们可以通过索引来获取数组中的值;那么我们可以自定义这些索引。我们先来考虑一下为什么要自定义索引器:如果我们数组中存的是一个类,而不是简单的整数,字符串,那么我们可能需要多个索引,来获取该类。这时我们仅仅通过整数索引是不够的,那么我们就需要更多的数据类型...

2019-08-29 15:42:20 188

原创 1.6.5 操作符重载

通过操作符重载我们可以达到我们想要的结果,而不是仅仅使用预定义的操作符的功能。例如,我们想计算一个矩阵:Matrix a, b, c;// assume a, b and c have been initializedMatrix d = c * (a + b);那么我们就不可能使用*的预定义的功能了,必须要对*进行重载来满足我们的需求。操作符是如何工作的要想对操作符进行...

2019-08-29 14:35:07 157

原创 1.6.4 比较对象是否相等(Equals和==)

System.Object定义了三种不同的方法来比较对象是否相等:ReferenceEquals和两个版本的Equals。Equals的两个版本:一个是静态方法。一个是可以重写的虚拟方法,你可以使用接口IEquality<T>,这是定义的泛型类型参数。引用类型的比较ReferenceEquals方法该方法是一个静态方法,它用来测试两个变量是否指向同一个类的实例,特别需要...

2019-08-28 09:25:58 198

原创 1.6.3 类型安全

因数据类型并不总是可以无缝地互换,本节讨论基本类型之间的转换。类型转换我们来看一个例子,将10和23赋值给byte变量,然后相加,赋值给total,结果会编译错误。是因为相加之后的值不能存储在单个字节上。byte value1 = 10;byte value2 = 23;byte total;total = value1 + value2;Console.WriteLine(...

2019-08-27 16:49:26 87

原创 1.6.2 二进制操作符

我对这里面的内容接触很少,着实不想弄,等心血来潮在说吧。

2019-08-27 15:35:12 144

原创 1.6.1 操作符

操作符种类种类 操作符 算数运算符 + - * / % 逻辑运算符 & | ^ ! 字符串连接 + 自增,自减 ++ -- Bit shifting << >> 比较 == >= <= > < != 索引 [] 成员访...

2019-08-27 15:33:37 128

原创 1.5.6 泛型方法

除了定义泛型类,泛型结构外,还可以定义泛型放啊发,泛型方法可以在泛型类型定义 ,也可以在非泛型类中定义。下面是定义的一个泛型方法,该泛型类型用于两个参数。(前面有介绍ref关键字)void Swap<T>(ref T x, ref T y){ T temp; temp = x; x = y; y = temp;}通过传入类型来调用泛型类...

2019-08-26 16:58:46 98

原创 1.5.5 泛型结构

同泛型类,也存在泛型结构。除了泛型结构不具有继承外,其他的和泛型类差不多。在本章节中我们将使用泛型结构Nullable<T> ,这是在.net framwork框架中存在的。举个例子:数据库中的数字和编程语言中的数字有个重要的区别,数据库中的数字可以为空,但C#中的的数字不能为空,因为,int32是一个结构体,他是一个值类型,不能为空。如果解决这种办法,我们可以将数据库或者...

2019-08-26 14:59:34 234

原创 1.5.4 泛型接口(协变和抗变)

使用了泛型接口,我们不再像以前那样去处理一些方法,比如:以前版本中存在这样一个方法:public interface IComparable<in T>{ int CompareTo(T other);}public class Person: IComparable{ public int CompareTo(object obj) {...

2019-08-26 11:08:02 178

原创 1.5.3 泛型类的特征

当我们定义一个泛型类时,如果传入的类型不确定为值类型或者为引用类型,那么为题就来了,如果给一个T类型的变量赋值?值类型的不能位null,引用类型不能位0等等。如果泛型类型不需要对象类的特性,但需要调用泛型类中的某些特定方法,又该如何处理?那么接下来,我们将讨论:默认值约束继承静态成员本例从一个通用文档管理器开始,该文档管理器用于从队列读写文档和向队列读写文档。首先创建一...

2019-08-23 17:39:02 135

原创 1.5.2 如何以及为何创建泛型类

创建泛型类,我们先从一个非泛型类来开始public class LinkedListNode{ public LinkedListNode(object value) => Value = value; public object Value { get; } public LinkedListNode Next { get; internal set; }...

2019-08-23 16:03:00 99

原创 1.5.1 泛型总览

泛型是.net 中重要的一部分。那么接下来将从一下几个方面来介绍泛型1、性能2、类型安全3、二进制代码的重用4、代码膨胀5、命名手册1.5.1. 1 泛型提高了性能首先回顾一下值类型和引用类型:值类型是存在栈中的,引用类型是存在堆中的,C#类为引用类型,结构体为值类型。对于.Net来说,值类型转化为引用类型是很容易的。 举个例子,当int类型转化为objec...

2019-08-22 14:34:21 69

原创 1.4.4.2 as 和 is 操作符

前一章,我们讨论了如何定义一个接口,并有多个类去实现它。那么我们要明白实现接口的类可以直接赋值给接口对象。IBankAccount venusAccount = new SaverAccount();那么这时候我们就会碰到一个问题,在我们定义一个方法的时候传入的是Object类型,而不是实现接口的类型,那我们如何将这个类赋值给接口类型呢? public stati...

2019-08-22 14:16:35 80

原创 Git基本操作

创建一个新仓库:在当前文件夹下创建: git init在指定文件夹下创建: git init D:/Test/newrepo创建完仓库之后,你需要clone一个文件到本仓库,才能进行查看和修改克隆项目 :git clone [url]克隆完项目后,对项目进行修改,修改完成后使用 git add 命令将修改的内容添加至缓存对所有文件添加缓存:git add .添加缓存后...

2019-08-21 10:36:49 131

原创 1.4.4.1 定义和实现接口

我们用一个例子来说明接口的定义和实现我们使用银行账户系统来定义和实现接口。这个银行账户系统有很多的银行账户,他们彼此之间可以对账户进行存取款,查询余额。因此我们需要定义一个接口,用来识别不同的账户的不同操作。开始把,首先定义一个接口 public interface IBankAccount { void PayIn(decimal amount);...

2019-08-14 11:26:38 160

原创 使用Microsoft.Web.Administration 自动配置.Net Core 或.Net FrameWork到IIS

这篇文章是关于如何使用最新的Microsoft.Web.Administration名称空间, 来操作IIS7.0,从而自动配置.Net Core 或.Net FrameWork到IIS,其中包括对应用程序池名字的检测与创建和网站名字的检测与创建。首先使用Nuget安装Microsoft.Web.Administration库 创建一个方法的返回类型,用于记录网站名和应用程序名是否存在和是否...

2019-08-13 15:40:12 677

原创 1.4.4修饰符

C#中的修饰符很多,那么我们现在花点时间总结一下。C#修饰符 修饰符 可以之处 描述 public 公有访问 不受任何限制。 protected 保护访问 只限于本类和子类访问,实例不能访问。 internal 内部访问 只限于本项目内访问,其他不能访问。 private 私有访问 只限于本类成员访问。子类,实例都不...

2019-08-07 11:23:06 108

原创 1.4.3.7 派生类的构造方法

根据https://blog.csdn.net/img_Guo/article/details/81712813改写。(加入自己见解使其更易懂)一、派生类的构造方法的执行顺序派生类的构造方法分为两类:静态构造方法和实例构造方法 两种构造方法的执行顺序是不同的,静态类的构造方法是从对象实例化开始,从要实例化的类开始向上依次寻找基类,依次执行。而实例构造方法是在静态构造方法之后从最顶层的...

2019-08-07 10:15:18 268

原创 1.4.3.6 封闭类和封闭方法(sealed)

因为所有的类都可以被继承,为了防止类的继承被滥用,C#中提出了密封类的概念。如果想声明一个类,并且该类不能被其他类所继承。那么使用sealed关键字可以将类和方法封闭起来,使类不能被继承,方法不能被重写。sealed class FinalClass{}密封类不可以被继承,但是可以继承其他类。由于密封类的不可继承性,因此密封类不能声明为抽象的,即sealed修饰符不能与abst...

2019-08-05 16:02:52 385

原创 1.4.3.5 抽象类和抽象方法

C#可以将类和方法声明为抽象类和抽象方法。抽象类不能实例化,而且抽象类没有实现(没有方法体),所以必须在派生类中重写。抽象方法是自动使用Virtual关键字,即使我们不提供Virtual关键字,编译器依然不会报错。抽象放发的声明必须在抽象类中。也就是说你想声明一个抽象方法,那么就必须将方法所在的类改为抽象类。我们来声明一个抽象类,然后声明一个抽象方法。public abstract ...

2019-08-05 14:46:02 104

原创 1.4.3.4 调用基类中的方法

C#对于调用基类中的方法有着自己独特的语句:base.FunctionName。举个例子:创建一个基类,在基类中声明一个虚方法Move。再创建一个类继承这个基类,在子类中重写父类的虚方法,方法中调用基类的Move方法。public class Shape{public virtual void Move(Position newPosition){Position.X = newPos...

2019-08-05 14:01:15 731

原创 1.4.3.3 隐藏方法

如果签名(参数个数、参数类型、返回类型、方法名)相同的方法在基类中和在基类的派生类中同时出现。但是这个方法在基类中没有virtual关键字,在派生类中没有override关键字,那么派生类就会隐藏基类中的方法。举个例子: public class Postion { public int X { get; set; } public int Y { ...

2019-08-04 22:33:12 140

原创 1.4.3.2 多态性

首先我们来看一下多态性的定义:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。换句话说,实际上就是同一个类型的实例调用"相同"的方法,产生的结果是不同的。当我们声明一个静态方法ublic static void DrawShap(Shape shape) => shape.Draw();参数时Shap,调用的方法也是Shap中的方法。当我们调用的...

2019-08-04 21:44:08 71

原创 1.4.3.1 虚方法

声明一个虚方法需要用到Virtual 关键字,声明虚方法后,就可以在任何派生类中重写该方法 public class Shape { public virtual void Draw() => Console.WriteLine($"Shape with Positio and Size "); ...

2019-08-04 21:21:02 116

原创 1.4.3. 实现继承

实现类的继承,首先声明一个基类 public class Shape { }在声明一个子类 public class Size { }实现继承 public class Size:Shape { ...

2019-08-03 23:04:21 66

原创 1.4.1 面向对象 1.4.2 继承的类型

面向对象的三个重要的概念是继承、封装、多态继承的类型单重继承:一个类可以可以派生自一个基类。多重继承:一个类派生自多个基类。因为多重继承会产生复杂的代码,并产生很多多余的开销,C#不采用这种方式。多层继承:A类继承与B类,B类有继承于C类,这中继承的方式就属于多层继承。接口继承:一个类可以继承定义好的接口类,接口继承支持多重继承,这种方式C#是支持的。结构是值类型,所以编码...

2019-08-03 22:33:19 94

原创 1.3.10 Object类

所有的.Net类最终都派生与System.Object/如果自定义类没有制定基类,那么编译器就会自动假定这个类派生自Object。这就意味着我们可以使用自定义的方法和属性外,还可以 使用Object类中的公共方法。...

2019-08-02 23:24:32 78

原创 1.3.9 扩展方法

扩展方法的目的就是为一个现有类型添加一个方法,现有类型既可以是int,string等数据类型,也可以是自定义的数据类型。为数据类型的添加一个方法的理解:一般来说,int数据类型有个Tostring的方法,就是把int 数据转换为字符串的类型,比如现在我们想在转换成字符串的时候还添加一点东西,比如增加一个字符 a .那么之前的Tostring就不好使了,因为它只是它我们的int数据转换为s...

2019-08-02 23:19:41 212

原创 1.3.8 局部类(partial class)

partial class 可以用于class ,struct,方法,interface,而且这些类、结构等等不局限于一个文件中。假如您想对由工具生成的类,而不是自己写的类进行添加内容,但是又不能重新运行该工具产生类,因为会把之前改的丢失掉,那么这时候您只需要将类改为partial class。再使用代码生成工具添加该类的内容就可以了。如果一下两个局部类,在编译的时候就会把两个方法放到同一个...

2019-08-02 17:33:59 1290

原创 1.3.6 可以为null的值类型

引用类型可以为null但是值类型不能为null

2019-08-02 17:08:58 221

原创 1.3.7枚举类型

枚举是包含一系列常量的值类型枚举使用enum关键字进行定义 public enum Color { Red, Green, Blue }通过定义一个枚举值的变量,并将已有的枚举中的常量进行赋值private static void ColorSamples() ...

2019-08-02 16:09:14 117

原创 1.3.5传递参数之值传递和引用传递

先把最重要的一句话放在前面:通常向方法传递一个实参时,对应的参数(形参)会用实参的一个副本来初始化。1、首先是传递引用类型的参数:当我们将类型A定义为class类型时,则创建了一个引用类型。在main()函数中进行实例化后,调用ChangeA函数对A中的X进行修改,所得结果为:a1的值为:2,我们发现,调用ChangeA函数改变了a1的X值原因:调用函数ChangA传递参数a1...

2019-08-01 13:09:57 117

原创 微信消息发送配置(全局注册)

1、ConfigureServices #region 微信模板消息配置 //读取微信节点配置信息 services.Configure<SenparcSetting>(Configuration.GetSection("SenparcSetting")); services.Configure<Senp...

2019-05-10 17:58:07 1034

FramWorkIISAutoPublisConsole.7z

改代码是使用Microsoft.Web.Administration对IIS应用池名称,站点名称检测,与应用池和站点创建。达到使用C#代码自动为.net core和.net framework配置IIS站点

2019-08-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除