
C#
鸿雁
爱好文学,擅于书法,苦于编码,喜欢交友!
展开
-
c#获取某月有多少天的方法
//第一种 public int GetDay1() { DateTime dt = DateTime.Now; int dt = DateTime.DaysInMonth(dt.Year, dt.Month); return day; } //第二种原创 2016-11-03 09:59:29 · 8602 阅读 · 1 评论 -
C# Func的用法
C#中Fun和前面介绍过的Action有点类似,都是一个委托方法不同的是Func是有返回值的,而Action没有Fun常用有两个参数,前面的是输入参数,后面的是输出参数(意味着是在另一部分运算中产生的)恰恰是整个方法的返回值(T arg)代表的是和输出参数类型相同的方法名称(返回值的类型和Func输出参数类型相同)Fnc最多有16个输入参数,有且只有一个输入参数//原创 2016-08-31 16:42:14 · 40704 阅读 · 0 评论 -
C# Action委托方法
第一次看到Action感觉很迷茫,它是干什么的,原来是个委托方法,这样就好理解了看源码的声明 // // 摘要: // 封装一个方法,该方法只有一个参数并且不返回值。 // // 参数: // obj: // 此委托封装的方法的参数。 // // 类型参数: // T: //原创 2016-08-31 13:57:12 · 13042 阅读 · 0 评论 -
c#json如何格式化日期和时间
在调用JsonConvert.SerializeObject()的时候会出现日期时间比如:2016-08-22T10:23:38希望转换的时候不需要T,或者我们需要的只有日期2016-08-22,或者日期是2016/08/22解决日期时间可使用IsoDateTimeConverternamespace Newtonsoft.Json.Converters{ pub原创 2016-08-22 11:53:21 · 6925 阅读 · 0 评论 -
asp.net mvc c# 读取json文件返回字符串
在做前台页面展示的时候需要后台数据,在前后分离的情况之下,我们以假数据来展示我们的逻辑。脱离真实的数据库,来读取.json文件第一、创建.json文件{ "total": 1, "page": 1, "records": 1, "costtime": "100", "rows": [ {原创 2016-08-10 10:55:52 · 12177 阅读 · 0 评论 -
C# var和dynamic的用法和理解
var和dynamic的本质区别是类型判断的时间不同,前者是编译时,后者是运行时。1.var在声明变量方面简化语法(只能是局部变量),在编译时交给编译器推断。2.dynamic也是为简化语法而生的,它的类型推断是交给系统来执行的(运行时推断类型)。3.var不能用于字段、参数等,而dynamic则可以。4.var在初始化的时候就确定了类型。5.dynamic可以用于方法字段、参原创 2016-08-31 14:55:47 · 2936 阅读 · 0 评论 -
C# :this的用法(冒号后面的this)
C# 中的冒号后面的this这种调用在古老的vs2003就根本没见过,后来用2005也不这样用其实他的用法就是C#简化调用产生的1.就目前我发现只用于有参构造函数调用另一有参构造函数,无需在构造函数累不调用构造函数用:this就可以了2.单独的this一般都是标识当前资源对象的3.有时用于所引器4.用于扩展类下面举个:this的例子 internal cla原创 2016-08-31 17:17:35 · 9673 阅读 · 2 评论 -
C# Tuple的用法
Tuple是返回多个参数,C# 4.0引入最多支持8个参数,第八个参数是Tuple,意思就是参数多于8个就开始嵌套调用了一个函数返回多个类型,这样就不在用out , ref等输出输入参数了,可以直接定义一个tuple类型就可以了。非常方便。// // 摘要: // Creates a new 2-tuple, or pair.原创 2016-08-31 17:40:48 · 14341 阅读 · 0 评论 -
C# ?问号运算符知多少
总结一下C#中问号有三种第一:三目操作运算符【 ? : 】问号前面的是条件,后面的是结果,条件满足返回冒号前面的值否则后面的值事例 public int WhoBig(int a, int b) { return a > b ? a : b; } public int WhoSmall(int a, int原创 2016-03-02 14:47:51 · 16528 阅读 · 2 评论 -
C# Lazy<T>延时加载类
概念:延时加载(延时实例化或延时初始化)重点是延时,用时加载。意思是对象在使用的时候创建而不是在实例化的的时候才创建。延时加载主要应用的场景:1.数据层(ADO.NET或Entity Framework等ORM,Java里面的Hibernate也用到了这种技术)2.反射(加载assemblier,type,MEF)3.缓存对象,领域实体对于一个引用类型的T运原创 2016-09-01 14:45:00 · 3420 阅读 · 0 评论 -
C# _ => { }是什么情况
说起lambda表达式其实简单理解为一个方法,什么方法呢--是个匿名方法(就是一个没名字的方法)第一种() => { };是一个既没有参数又没有返回值的方法第二种x => x+2;是一个参数为x返回值为x+2的方法第三种(x, y) => x + y;是一个参数为x和y返回值为两个参数之和的的方法,当参数大于一个的时候lambda前面的参数房子一对括原创 2016-09-01 15:41:28 · 4592 阅读 · 0 评论 -
C# operator 关键字的用法
operator 只要是运算符都能重载operator 关键字的主要作用是用来重载运算符的,还可以用于类或结构中类型的自定义转换。下面看个例子 class Feige { //定义两个全局变量 int a, b; //声明带两个参数的构造函数 public原创 2016-09-02 12:10:59 · 16442 阅读 · 0 评论 -
C# winform在线程中给控件赋值
C# winform在线程中给控件赋值确定要报错,这要是打印日志什么的就很烦,好在用代理就可以解决这个问题public delegate void AppendStringCallback(string text); public static event AppendStringCallback appendStringCtrl; public delegat原创 2016-10-12 13:20:13 · 9423 阅读 · 0 评论 -
检索 COM 类工厂中 CLSID 为 {11FCBB79-75DC-4C17-AF52-48B0D3FE0D6F} 的组件时失败,原因是出现以下错误: 80040154
做江苏企信通的短信接口的时候会碰到com组件注册的问题。主要是错误: 80040154在32位的操作系统中注册成功问题就可以解决,但是在64位操作系统中注册成功依然报错原因是要修改平台改成32位问题解决了!原创 2016-09-07 10:21:50 · 5064 阅读 · 2 评论 -
C# yield关键字的用法
yield关键字的作用是将当前集合中的元素立即返回。1.返回元素用yield return;(一次一个的返回)2.结束返回用yield break;(终止迭代)3.返回类型必须为 IEnumerable、IEnumerable、IEnumerator 或 IEnumerator。4.参数前不能使用ref和out关键字5.匿名方法中 不能使原创 2016-09-05 15:40:52 · 8965 阅读 · 5 评论 -
asp.net sqlite unable to open database file的解决方案
sqlite unable to open database file意思是连接数据库的时候无法打开第一种思路:存放数据库的文件夹没有权限,app_data需要设置一下权限,设置成everyone权限。第二种思路:是数据库连接没有使用绝对路径,请参考asp.net sqlite error no such table的解决方案原创 2016-08-25 12:14:19 · 7361 阅读 · 2 评论 -
asp.net sqlite error no such table的解决方案
asp.net连接sqlite数据库的时候报错sqlite error no such table意思是找不到表其实是Data Source除了问题那如何连接了web.config 这样访问也是错的,Data Source需要的是物理路径【绝对路径】才行所以需要动态修改private static readonly string sqlConnecti原创 2016-08-25 11:28:02 · 5610 阅读 · 0 评论 -
C# alias关键字的作用
可能必须引用两个具有相同完全限定类型名的程序集版本。 例如,可能必须在同一应用程序中使用程序集的两个或多个版本。 通过使用外部程序集别名,可以将来自每个程序集的命名空间包装在由别名命名的根级别命名空间中,从而使这些命名空间可以在同一文件中使用。注意extern 关键字还用作方法修饰符,声明用非托管代码编写的方法。若要引原创 2016-09-02 15:57:44 · 3441 阅读 · 0 评论 -
C# implicit关键字的用法
implicit 关键字用于声明隐式的用户定义类型转换运算符。如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换。隐式转换可以通过消除不必要的类型转换来提高源代码的可读性。 但是,因为隐式转换不需要程序员将一种类型显式强制转换为另一种类型,所以使用隐式转换时必须格外小心,以免出现意外结果。 一般情况下,隐式转换运算符应当从不引发异常并且从不丢失信息,以便原创 2016-09-02 14:37:03 · 12426 阅读 · 1 评论 -
C# explicit关键字的作用
explicit关键字的作用是强制转换用户自定义的类型转换运算符。通常前面用static后免用operator,一般是把当前类型转换成另一个类型(将原类型的转换成目标类型)static explicit operator举个例子: class A { public A(float f) {原创 2016-09-02 14:06:20 · 6654 阅读 · 0 评论 -
C# 重构之六(重新排列参数重构)
Reorder Parameters是一项 Visual C# 重构操作,提供了一种对方法、索引器和委托的参数顺序进行更改的简单方法。 Reorder Parameters会更改声明,并在调用该成员的所有位置重新排列参数,从而反映新的顺序。若要执行 Reorder Parameters 操作,请将光标置于方法、索引器或委托之上或旁边。当光标位于适当的位置后,请通过按键盘快捷键或从快捷菜单中原创 2016-08-31 12:09:47 · 1032 阅读 · 0 评论 -
C# 重构之五(移除参数重构)
移除参数重构 (C#)Remove Parameters 是一项重构操作,提供了一种将形参从方法、索引器或委托中移除的简单方法。 “移除参数”会更改声明;并在调用该成员的所有位置移除形参,从而反映新的声明。要执行“删除参数”操作,请首先将光标放在方法、索引器或委托上。 当光标位于适当的位置时,若要调用 Remove Parameters 操作,请单击“重构”菜单,按键盘原创 2016-08-31 11:57:41 · 1258 阅读 · 0 评论 -
C#向excel中写入数据的三种方式
第一种:将DataGrid中的数据以流的形式写到excel中,格式以html的形式存在 Response.Clear(); Response.Buffer = true; Response.Charset = "GB2312"; Response.AppendHeader("Content-Di原创 2011-11-30 10:47:44 · 38795 阅读 · 1 评论 -
C# 实现 Snowflake算法
使用UUID或者GUID产生的ID没有规则Snowflake算法是Twitter的工程师为实现递增而不重复的ID实现的从图上看除了第一位不可用之外其它三组均可浮动站位,据说前41位就可以支撑到2082年,10位的可支持1023台机器,最后12位序列号可以在1毫秒内产生4095个自增的ID。在多线程中使用要加锁。 /// /// 动态生产有规律的I原创 2016-07-29 15:21:48 · 15327 阅读 · 10 评论 -
ASP.NET MVC控制器向View传值
ViewData是字典类型,赋值方式用字典方式,通过key值读取对应的value,ViewData["key"]ViewBag是动态类型,使用时直接添加属性赋值即可ViewBag.xnameViewBag和ViewData只在当前Action中有效,等同于ViewViewBag可以调用ViewData在控制器中写入的值TempData 的数据至多只能经过一次Controller传递,并且每个元素至多只能被访问一次,访问以后,自动被删除。一般用于临时的缓存内容或抛出错误页面时传递错误信息,可以将Tem原创 2016-07-06 17:11:11 · 898 阅读 · 0 评论 -
asp.net mvc 未找到路径“/favicon.ico”的控制器或该控制器未实现 IController
在asp.net mvc的工程项目的根目录下添加favicon.ico图标即可解决问题度娘解释如下解释如下:所谓favicon,即Favorites Icon的缩写,顾名思义,便是其可以让浏览器的收藏夹中除显示相应的标题外,还以图标的方式区别不同的网站。当然,这不是Favicon的全部,根据浏览器的不同,Favicon显示也有所区别:在大多数主流浏览器如FireFox和Intern原创 2016-07-26 11:48:06 · 5387 阅读 · 0 评论 -
C# 隐式接口和显示接口的区别
先看个例子声明两个接口 public interface IFg { int Add(); void Fei(); } public interface IWf { int Add(); void Fei(); }Fg类开始继承隐式接口 public class原创 2016-07-26 10:34:57 · 3624 阅读 · 1 评论 -
C# static看了就懂
static称之为静态修饰符,开辟新的内存,调用速度快。第一、 静态类静态类:无法从静态类派生子类,无法实现构造方法【也就是说整个类无法实例化】,静态类中的变量和方法全部无法实例化,一切皆静态。主要特性:1:仅包含静态成员。2:无法实例化。3:是密封的。4:不能包含实例构造函数。第二、 静态变量1. 具有全局性2. 无论类创建多个对象,其中静态成员的共享一个副本3. C#不支持静态局部变量【不支持方法内部的静态变量,使用静态局部变量是无法通过编译的】第三原创 2016-07-12 16:11:44 · 3931 阅读 · 0 评论 -
DataList排序编号
protected void dlBbsDetail_ItemDataBound(object sender, DataListItemEventArgs e) { ListItemType elemType = e.Item.ItemType; if (elemType != ListItemType.Header &&原创 2013-06-03 11:50:13 · 1900 阅读 · 0 评论 -
如何解决C#导出excel异常来自 HRESULT:0x800A03EC的方法
xlBook.SaveAs(FilePath,Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Ty原创 2012-10-08 11:30:44 · 26642 阅读 · 4 评论 -
EF CreateQuery()的命名空间
在winform中无法写出CreateQuery()using System.Data.Objects;发现Data后面没有Object在项目中添加引用 System.Data.Entity就可以了var info = ((IObjectContextAdapter)db).ObjectContext.CreateQuery(sql);foreach (var item in原创 2016-07-20 15:26:15 · 1906 阅读 · 0 评论 -
EF 查询数据
点击确定添加后自动生成Model1.cs public partial class Model1 : DbContext { public Model1() : base("name=Model11") { } public virtual DbSet AreaInfo { get; s原创 2016-07-20 18:01:51 · 19420 阅读 · 2 评论 -
C# as和is是什么鬼
//使用is public void TestIs() { object obj = new object(); //1.判断类型是否相同 if (obj is ClassFg) { //如果obj是ClassFg说明转换成功原创 2016-08-04 10:21:37 · 937 阅读 · 0 评论 -
C# 重构之四(提取接口重构)
提取接口”是一项重构操作,提供了一种使用来自现有类、结构或接口的成员创建新接口的简单方法。当几个客户端使用类、结构或接口中成员的同一子集时,或者当多个类、结构或接口具有通用的成员子集时,在接口中嵌入成员子集将很有用。有关使用接口的更多信息,请参见 接口(C# 编程指南)。“提取接口”在新文件中生成接口,并将光标定位于新文件的开头。使用“提取接口”对话框,可以指定要提取到新接口中原创 2016-08-31 11:47:31 · 2228 阅读 · 0 评论 -
C# 重构之三(封装字段重构)
“封装字段”重构操作能够从现有字段中快速创建属性,然后通过对新属性的引用无缝更新代码。当某个字段是 public 时,其他对象可以直接访问该字段并可对其进行修改,而拥有该字段的对象不会检测到。通过使用属性封装该字段,可以禁止对字段的直接访问。若要创建新属性,“封装字段”操作会更改想要封装到 private 的字段的访问修饰符,并为该字段生成 get 和 set 访问器。在某些情况下原创 2016-08-31 11:38:36 · 2330 阅读 · 0 评论 -
C# 重构之二(重命名重构)
“重命名”是 Visual Studio 集成开发环境 (IDE) 中的一项重构功能,为重命名代码符号(如字段、局部变量、方法、命名空间、属性和类型)的标识符提供了一种简单的方法。 “重命名”功能可用来更改注释和字符串中的名称,还可用于更改标识符的声明和调用。 注意在使用 Visual Studio 的“源代码管理”时,请在原创 2016-08-31 11:27:05 · 2436 阅读 · 0 评论 -
C# 重构之一(提取方法重构)
提取方法重构:将现有的代码片段提取出来,构造成一个新的方法优点:1.通过强调离散的可重用方法鼓励最佳的编码做法。2.鼓励通过较好的组织获得自记录代码。3.当使用描述性名称时,高级别方法可以像读取一系列注释一样进行读取。4.鼓励创建细化方法,以简化重载。5.减少代码重复。重构:1.源代码 const double PI = 3.14159原创 2016-08-31 11:10:33 · 4308 阅读 · 2 评论 -
C# in关键字你造吗
上下文in关键字大致有三种第一:在foreach中使用用于遍历数组或集合foreach 语句对实现 System.Collections.IEnumerable 或 System.Collections.Generic.IEnumerable 接口的数组或对象集合中的每个元素重复一组嵌入式语句。 foreach 语句用于循环访问集合,以获取您需要的信息,但不能用于在源集合中添加或移原创 2016-08-30 17:21:49 · 11474 阅读 · 0 评论 -
C#如何判断是哪个类的那个方法调用了当前方法
平常我们写了一个类,目的是让所有的项目或类来调用,此时我们写生成日志,要明确是哪个类中的那个方法来调用的,以便后面好查询,保留详细的记录。 public static LogInfo Instance(string path) { StackTrace trace = new StackTrace(); //原创 2016-08-05 14:43:44 · 12145 阅读 · 0 评论 -
C#如何判断是web程序还是winform
/// /// 判断是否是web程序 /// /// true:是,false:winform public bool IsWebApp() { bool flag = false; if (HttpContext.Current != null)原创 2016-08-05 11:34:45 · 4072 阅读 · 0 评论