随笔- 91
文章- 1
评论- 9
阅读-
54451
12 2013 档案
继承多态绕点 Java篇
摘要:上一篇把C#语言的继承,多态里的特殊的情况做了一下总结,其实那一部分代码都是从Java翻译过去的,今天来总结一下Java在这种情况下是怎么调用的。上一篇我们说的是:1.多态,只在多态系里方法调用,很简单,先调重写方法,如果没有再调父类的虚方法。2.非多态,只自声明时类型,先调自身的方法(比如非继承普通方法,new修饰的方法),如果没有再看继承来的方法,最后再看多态系方法(也就是重写了的方法)但是Java里做了测试,这个规律不适用,下面是测试代码 public class Shape { } public class Rectangle extends Shape { } ...
阅读全文
继承多态绕点 C#篇
摘要:最近在看博客的时候看到一块很绕的地方,有点类似于以前学习C语言是的i++,++i组合到一起使用的情况,很坑b的,绝对会比i++,++i这种情况更有用,虽然实际代码里面确实很少出现.面对象像三大特点不是封装,继承和多态吗,绕的地方主要是继承和多态融合到一起的时候.不啰嗦,先看下面代码 public class Shape { } public class Rectangle : Shape { } public class Triangle : Shape { } public class Father { public void Foo(Rectan...
阅读全文
lock关键字理解
摘要:>可以把lock关键字可以看成try{ Monitor.Enter(x); //..}finally{ Monitor.Exit(x);}这样子的结构,当然使用lock关键字更方便>容易混淆的lock(对象)这个里面的锁对象很容易搞混淆,下面区别一下lock(this),lock(typeof(tt)),lock("a")1)lock(this) 下面代码public class A{ public void Foo(){ lock(this){ //... } }}如果是A的同一个对象,开多个线程调用Foo方法,...
阅读全文
关于C#迭代器
摘要:>1 IEnumerator与IEnumerableIEnumerator与IEnumerable两个接口是用于实现迭代器的接品只要实现了IEnumerable就可以用foreach,linq等语法,一般来说实现IEnumerable接口的是Collection的数据,也就是一个集合,比如List,ArrayList等这种类型,因为一般foreach,linq都是在一个集合中查询而IEnumerator主要是支持IEnumerator一个接口,里面提供了用于迭代的属性和方法,两个接口代码public interface IEnumerable{ IEnumerator GetEnumer
阅读全文
关于排列组合中组合结果
摘要:最近程序里面需要一个组合的计算,于是写了一个组合类,没有实现排列,因为只要组合,所以只实现了组合,这里我们思想记录下来. 本文里约定 C(n,m)即从n个中选m个的组合,其中n>=m,m>=0,n>0 平时我们数据里学的组合一般都是问多少种情况比哪C(3,1)有几种情况,答案是3,不是我们排列出来的情况.而我这次写的主要是排列出组合情况,比如:C(3,1),输出结果1,0,00,1,00,0,1这样子的结果,当然结果我能输出来,有多少种情况我也能输出来,下面是思路 1.刚开始的时候,我会想到用动态规划,以前做过n个字符全排,就是变成n-1个字符全排列加上最后一个字符的各种位置
阅读全文
C#与Java中相等关系
摘要:最近在学习java的语法,发现java中两个字符串某些情况下不能用==这个来判断,比如自己定义的类中有String属性,那么就不能用==判断两个是否相等。这才开始比较C#和Java在这里的区别,最后发现区别不大,只有一个地方有一点区别。 一。C#中Equals(),==区别 C#代码 1 // 1) string类型 2 Console.WriteLine("1)"); 3 string s1 = "abc"; 4 string s2 = "abc"; 5 6 string s3 =...
阅读全文