一. C#的基类System. Object
在面向对象编程过程中,所有的类都是超级父类System. Object类的子类。所有的类都自动继承System. Object,自然也就继承了System. Object类的所有方法,System. Object包含的方法有:
public static bool Equals(object objA,object objB){} |
先要说明的是方法前面的修饰符public,static,protected,virtual,private等这些访问修饰符的意义会在下面介绍,我们现在看下这些方法的具体的作用,但是这些方法中的很多基本上很少用到,用的比较多的是ToString()和GetHashCode()这两个方法。
ToString()方法:是将调用该方法的对象转换成字符串再赋值给其他的变量
double f = Math.PI; string Tostring = null; Tostring = f.ToString(); Console.WriteLine("double f={0}",f); Console.WriteLine("调用Tostring = f.ToString()"); Console.WriteLine("Tostring={0}", Tostring);Console.WriteLine("调用之后d的值={0}",f); | 左边程序运行后的结果截图如下:
double f=3.14159265358979 调用Tostring = f.ToString() Tostring=33.14159265358979 调用之后d的值=3.14159265358979 |
GetHashCode()方法:用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用
String string1 = "ludei"; String string2 = "ludei"; String string3 = string1; Console.WriteLine("str1.GetHashCode{0}", string1.GetHashCode()); Console.WriteLine("str2.GetHashCode{0}", string2.GetHashCode()); Console.WriteLine("str3.GetHashCode{0}", string3.GetHashCode()); | string1.GetHashCode817104439 string2.GetHashCode817104439 string3.GetHashCode817104439 |
GetType()方法:这个方法返回从System. Type派生的类的一个实例。这个对象可以提供对象所属类的更多信息,包括基本类型、方法、属性等。
Finalize()方法:在引用对象被回收、以清理资源时调用。Finalize()方法的Object执行代码实际上什么也没有做,因而被垃圾收集器忽略。如果对象拥有对未托管资源的引用,则在该对象被删除时,就需要删除这些引用,此时一般要重写Finalize()。垃圾收集器不能直接重写该方法,因为它只负责托管的资源,只能依赖用户提供的Finalize()。
Equals(object objA,object objB)和ReferenceEquals(object objA,object objB)这两个方法的返回值是bool,比较两个对象是否是一样的对象。区别是
Equals(object objA,object objB):如果进行比较的两个引用指向的是同一个对象,则方法返回true;否则返回false;而,ReferenceEquals方法用于判断两个引用是否指向同一个对象,也就是引用相等
二.C#的访问修饰符
C#的访问修饰符有一下几个:protected, private, public, internal, protected internal。在类或者类的成员之前加上这些修饰符就会限制程序对加有修饰符的代码的访问权限。现在把有关修饰符的方法特性介绍下:
Public,选择它的方法是在成员声明中包括 public 修饰符。public 的直观含义是“访问不受限制”。所有的代码都可以访问
Protected,选择它的方法是在成员声明中包括 protected 修饰符。protected 的直观含义是“访问范围限定于它所属的类或从该类派生的类型”。
Internal,选择它的方法是在成员声明中包括 internal 修饰符。internal 的直观含义是“访问范围限定于此程序”,也就是目前的程序才可以访问。 Protected internal(意为受保护或内部的),选择它的方法是在成员声明中包括 protected 和 internal 修饰符。protected internal 的直观含义是“访问范围限定于此程序或那些由它所属的类派生的类型”。
Private,选择它的方法是在成员声明中包括 private 修饰符。private 的直观含义是“访问范围限定于它所属的类型”。 如果在编程过程中对类或者成员不加修饰,默认的就是这个。
有关值类型和引用类型的概念:如果一个变量va1存储的是值类型,则它直接存储包含数据的对象。任何其他的变量都不能直接存储已经由va1存储了的对象,虽然var2可以存储一个和var1存储的对象有着相同值的对象,但这意味着,和存储的对象毫不相干,任意改变其中一个存储的对象都不会影响到另一个变量存储的对象。如果变量var1存储的是一个引用类型,它直接存储一个指向对象的引用,同时可能存在另一个变量var2,它也存储着指向这个对象的引用,这意味着,改变var2引用的对象同时也会影响到var1引用的对象.这里只做个简单的介绍,以后会详细举例说明。