2012年1月10日
摘要: ref 的使用场景:调用方法传递参数的时候,对于值类型是“整体拷贝”,在方法的修改只在方法内有效,方法结束,从栈上弹出。在方法外不会产生副作用。ref 就是针对这种情况设计的,ref修饰的参数,强制参数按引用传递,在方法内的修改产生副作用。out 的使用场景:与ref 类似。ref 与 out的区别在于:1、ref 必须在方法调用前,进行显式的初始化。2、out 不需要再方法调用前进行初始化,但是在方法返回之前,必须完成赋值操作。方法定义和方法调用的地方,都必须显式地使用关键字ref 或者out,ref 与 out的实现原理应该是 对值类型进行了装箱。 阅读全文
posted @ 2012-01-10 14:57 Andy Niu 阅读(329) 评论(0) 推荐(0)
摘要: 值类型:1、值类型在栈上分配内存2、值类型超出作用范围,从栈上弹出,自动释放内存3、值类型包括两类:结构和枚举,结构包括BCL中的结构和自定义的结构。BCL中的结构也就是基础类型(Primitive Type),包括:整形(Sbyte、Byte、Char、Short、Ushort、Int、Uint、Long、Ulong)浮点型(Float、Double)decimalbool4、值类型赋值或者通过方法传递参数是 “整体拷贝”引用类型:1、引用类型在堆上分配内存2、GC管理堆上的引用类型3、引用类型包括类、接口、委托、数组和string4、引用类型赋值或者通过方法传递参数是 “复制引用”需要注意 阅读全文
posted @ 2012-01-10 14:08 Andy Niu 阅读(277) 评论(0) 推荐(0)
摘要: 代码:View Code 1 class Program 2 { 3 static void Main() 4 { 5 int a = 123; 6 string s1 = a.ToString(); 7 string s2 = Convert.ToString(a); 8 string s3 = ((IConvertible)a).ToString(null); 9 10 string s = "456";1... 阅读全文
posted @ 2012-01-10 13:44 Andy Niu 阅读(450) 评论(0) 推荐(0)
摘要: ToString的设计目的:为对象提供一个字符串,该字符串描述当前对象的信息。1、Object的ToString 返回当前对象所属类型的全名,这个意义不大,但是设计很合理,因为有些对象没法返回一个有意义的字符串说明,比如FileStream或者HashTable。2、Object 是所有类的根,所有类都直接或者间接继承Object。这些类大部分都重写了ToString方法。特别是值类型,比如int,double,值类型重写ToString,将实例的数值转换为等效的字符串。 阅读全文
posted @ 2012-01-10 13:33 Andy Niu 阅读(335) 评论(0) 推荐(0)
摘要: override的使用场景:重写父类的内容。这里主要讲重写父类的方法,重写必须满足以下约束:1、方法名、返回类型、参数签名完全相同。2、具有相同的访问权限(在Java中,重写不能扩大访问权限,如果父类方法抛出异常,子类方法只能抛出相同或者更具体的异常,或者不抛出异常(等价于抛出相同的异常),否则里氏代换会出现问题。)override的使用场景细分为以下三类:1、重写abstract,必须重写。2、重写virtual,可以重写。重写,调用子类的方法;不重写,调用父类的方法。3、重写override,在重写的基础上再次重写。当子类方法与父类方法的方法名、返回类型、访问权限、参数签名完全相同时,默认 阅读全文
posted @ 2012-01-10 11:34 Andy Niu 阅读(531) 评论(0) 推荐(0)
  2012年1月9日
摘要: 阅读代码:View Code 1 class Program 2 { 3 static void Main() 4 { 5 Person p1 = new Person { Name = "Andy" }; 6 Person p2 = p1; 7 8 ModifyReferenceValue(p1); 9 ModifyReference(p1);10 p1 = new Person { Name = "David"};11 ... 阅读全文
posted @ 2012-01-09 15:30 Andy Niu 阅读(726) 评论(0) 推荐(0)
摘要: 阅读代码:View Code 1 class Program 2 { 3 static void Main() 4 { 5 Person p1 = new Person { Name = "Andy" }; 6 Person p2 = p1; 7 8 p1.Name = "Bill"; 9 p1 = new Person { Name = "Carol"};10 }11 }第5行:在栈上分配一个变量p1,p1的类型为Pers... 阅读全文
posted @ 2012-01-09 11:10 Andy Niu 阅读(323) 评论(0) 推荐(0)
  2012年1月6日
摘要: params使用场景:调用方法的地方传递一组参数,参数的个数不确定。在方法的定义处,采用params 修饰数组。如下代码所示:View Code 1 class Program 2 { 3 static void Main() 4 { 5 UseParams(1,'a',"ss"); 6 Console.ReadLine(); 7 } 8 9 private static void UseParams(params object[] objects)10 ... 阅读全文
posted @ 2012-01-06 14:00 Andy Niu 阅读(217) 评论(0) 推荐(0)
摘要: string :关键字String :类可以认为string 是String的别名,在生成的IL中,都是当做String,类似的还有 object 与Object,int 与 Int32 阅读全文
posted @ 2012-01-06 11:28 Andy Niu 阅读(188) 评论(0) 推荐(0)
  2012年1月5日
摘要: WPF的控件ToolTip使用场景:当鼠标移动到控件上时,显示该控件的相关信息或者说明性文字。当控件的IsEnabled 为false 的时候,ToolTip 不会显示。针对这个问题,设置 ToolTipService.ShowOnDisabled="True" ,这样当控件IsEnabled 为false 的时候,也能显示ToolTip注意:没有必要为所有的控件提供ToolTip,对于那些小图标,或者用户不太清楚用途的控件应该提供ToolTip。 阅读全文
posted @ 2012-01-05 14:05 Andy Niu 阅读(935) 评论(0) 推荐(2)