c#
文章平均质量分 51
xiaolu_god2015
这个作者很懒,什么都没留下…
展开
-
13接口【显式接口实现】
c#中的接口,有隐式接口【就是一般意义上直接实现某个接口中的方法,从表现上看,没有接口名称限定】,和显式接口【有接口名称限定】internal interface IDemo{ void func(); }internal sealed class Demo : IDemo{ //隐式实现接口 public void func(){ ... }原创 2015-11-20 16:24:55 · 254 阅读 · 0 评论 -
12泛型
泛型这个概念并不算新鲜的事物【java,c++】等语言中也都各自有。然而,c#中的泛型使用起来还是更为方便简洁一些【尤其是可以向泛型施加的多种约束】原创 2015-11-19 19:56:02 · 261 阅读 · 0 评论 -
9参数
c#中,关于参数有 ref,out,params等修饰关键字,同时,也允许参数具有默认值,通过参数名称进行调用。如果一个方法有多个参数,并且有的参数具有默认值,那么具有默认值的参数应当在最后【也即,具有默认的参数右边不能有没有默认值的参数存在——–可变参数数组是个例外】。 类似:public void func(int i,j = 5,k = 10);对于func的调用:func(0);//只是对原创 2015-11-17 23:39:12 · 250 阅读 · 0 评论 -
const和值对象以及编译时常量
首先看一个例子: private static int s_n = 0; private static void M(int x = 9,string s = "A",DateTime dt = default(DateTime), Guid guid = new Guid()) { System.C原创 2015-11-17 22:07:08 · 557 阅读 · 0 评论 -
8扩展方法和分部方法
c#中有扩展方法和分部方法。扩展方法可以对一个已经存在的类型(class)中的功能进行添加,而不用对已有类进行修改或者派生【派生的方式对于值类型或者sealed修饰的类型来说行不通】在语法上: 扩展方法 要求所在的类型必须是一个静态类,并且扩展方法也是静态的【static修饰】,扩展方法只能用来对方法进行扩展,而不能扩展属性【property】,事件,委托等。扩展方法的第一个参数是要进行扩展的类型,原创 2015-11-17 19:07:59 · 284 阅读 · 0 评论 -
10 属性(property)
想对于【java/c++】这些语言来说,c#的property是比较独特的。给 使用者一种介于方法和字段之之间的感觉【对于编译器而言,其实还是一个字段+get/set两个方法】属性【property】,使用起来还是比较简单的:public sealed class PropertyDemo{ public string Name{get;set;} ... }个人比较喜欢这种方式,另原创 2015-11-18 14:45:35 · 299 阅读 · 0 评论 -
11事件
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; namespace EventDemo { /** * 模拟实现C#中的事件机制原创 2015-11-18 18:43:37 · 228 阅读 · 0 评论 -
8方法
c#中的操作符重载和转换操作符,在c++中也有,因此并没有太多值得注意的地方。语法差异略大的地方是,c#要求操作符重载和转换操作符都必须是 public 和 static 修饰的。对于转换操作符来说,operator 后面紧跟要转换的目标类型即可。【前面有implicit/explicit修饰】 例如: public sealed class Demo{ public static im原创 2015-11-17 16:30:37 · 224 阅读 · 0 评论 -
7常量
c#中,const是默认具有static属性的,【这与c++语言有些不同】。因此不允许在const前有static修饰。说到const,就很难不提到另外一个东西 readonly,readonly只读量。从语义上来说,就是是只读的。c#中可以进行内联赋值或者在构造器中进行赋值,而不允许其他方法对只读量进行改写【可以通过反射进行修改】那么,const和readonly区别在哪里: const是常量。原创 2015-11-17 13:24:39 · 280 阅读 · 0 评论 -
16 数组
数组是允许将多个数据项当做一个集合来出力的机制。所有数组类型都是从System.Array继承,而System.Array从Object继承而来数组相对简单,提供一些稍微注意的代码实例。string[] name = new string[]{"xiaolu","xiaowang"}; //数组初始化器 //也可以var names= new []{"xiaolu","xiaozhang"};//还原创 2015-11-23 16:25:54 · 226 阅读 · 0 评论 -
类型和成员基础
c#中,通过static来修饰类型名称,可以使得类型无法被实例化。这里的类型指的是引用类型(class),static修饰只能用于类(class),而不能用于值类型(struct),因为CLR总是允许值类型实例化,这是没有办法阻止的。(java中不用使用static来修饰类型,可以将构造函数私有化来达到无法实例化的效果或者用abstract修饰)由于使用了static关键字来修饰类型,使得类型无法被原创 2015-11-17 11:03:37 · 245 阅读 · 0 评论 -
14字符串和文本处理
c#中,对于字符串的处理,使用起来比较方便【String类型被定义为基元类型】,当程序中出现literal(字符串常量时)会直接应用到string上【个人一般习惯写小写keywords(语法着色),这里string和String类是对应的,类似object和Object类】string是不可变的【immutable】,string类型中的大多数方法返回的都是一个新构造的字符串,使用者不用担心破坏原来原创 2015-11-22 11:25:50 · 189 阅读 · 0 评论 -
java和C#访问数据库字段空值
最近学习c#过程中,c#存在一种Nullable类型,也就是常说的“可空类型”,一般多在数据库访问时使用到。Nullable类型使用于值类型,因为引用类型本身就是“可空的”(可以直接赋值为null). 假设数据库中存有一张student表,其中有年龄(整数型)字段。而这个字段是允许为空的【也就是没置入数据】。 当一般查询时,遇到这种空值类型,常常会跑出异常,程序终止,用其他方式解决又相对麻烦,此原创 2015-11-16 20:14:58 · 282 阅读 · 0 评论 -
15枚举
枚举类型,相对其他类型来说,使用上要简单一些。枚举类型: 定义了一组“符号名称/值”配对。internal enum Color{ White,//0 Red,//1 Green,//2 Bule,//3 Orange//4 }使用枚举类型而不是数字,可以使得代码更容易阅读,理解和维护。使用者定义的枚举类型都是从System.Enum继承,System.Enu原创 2015-11-22 22:29:06 · 209 阅读 · 0 评论 -
多线程与Invoke,Beginvoke
转载自多线程与Invoke,Beginvoke首先,什么样的操作需要考虑使用多线程? 总的一条就是,负责与用户交互的线程(以下简称为UI线程)应该保持顺畅,当UI线程调用的API可能引起阻塞时间超过30毫秒时(比如访问CD-ROM等速度超慢的外设、进行远程调用等等)就应该考虑使用多线程。 为什么是30毫秒?30毫秒的概念是人眼可以察觉到的一个迟滞,大约等同于电影里的一帧停留的时间转载 2016-03-21 16:39:58 · 306 阅读 · 0 评论