摘要:
一个类的私有成员,本来是不可以给外部调用的。但是在某些特殊情况下,我们可能确实须要调用另一个类的私有成员,怎么办呢? 看下面的一个例子就明白了。要注意的是:尽量不要这么调有,因为,也许版本升级以后,别人就不再提供这个方法了。namespace 反射调用私有的成员{ class Program { static void Main(string[] args) { Type type = typeof(Class1); object obj= Activator.CreateInstance(type); //调用类库中公有的方法用下面的方法就可以了,但是私有方法就不行了。 MethodInfo 阅读全文
摘要:
做两件事情,就可以了。第一步:右击项目名称,选择->属性->生成->允许不安全代码(在上面打勾)第二步:在方法(或者是类名等)的前面加上unsafe关键字。 阅读全文
摘要:
(1)、因为字符串是不可变的,所以CLR可能会将相同值的字符串用同一个实例。程序中大量使用字符串,有不少是重复性的,为了降低内存占用,.Net将代码中声明的字符串放到字符串拘留池中,值相同的字符串共享同一个实例。字符串是不变的。不是所有字符串都在拘留池中,.Net会判断哪些该放。(2)、object.ReferenceEquals方法判断两个变量是不是一个实例(同一个对象)string s1 = "abc";string s2 = "abc";Console.WriteLine(object.ReferenceEquals(s1,s2));(3)、动态字 阅读全文
摘要:
C、C++语言中,new一个对象后要用delete()或者free()自己回收内存,而Csharp中,有一套自己的垃圾加收机制,那么,他什么时候会回改呢?如果一个引用对象,没有指针再指向他的时候,这个对象就可以被回收。注意:是可以被回收,而不一定马上就会回收,因为每回收一次就会耗费很多资源,所以,他会找时机。那么,如果我们确实要回收了,就当怎么办?可以调用GC.Collection()。但一般情况下,不要去调用。与此相关的一个知识点就是WeakReference,看一个例子Person p1 = new Person(); WeakReference wr = new WeakReferenc 阅读全文
摘要:
1、正则表达式中的元字符字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp 对象的 Mul 阅读全文
摘要:
如:string s; s.ToUper().ToString();这个就是扩展方法的形式(可以一级一级的调) 那么,我们自己怎么来写扩展方法呢?(1)、在类的前面加上static关键字(2)、在方法的第一个参数前面加上this关键字(这样在使用这个方法的时候就不用在后面的括号中传参,而是用s.的方式来调用这个方法)(注意这个是.NET3.0的新特性,所以低版本的Vs没法实现)(3)、方法的第一个参数必须是你要扩展的那个类型,比如你要给int扩展一个方法,那么第一个参数就必须是int。如果想要在低版本的vs中也实现链式编程,看下面的一个例子using System;using System.C 阅读全文