博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
话说System.Object(读书笔记)
阅读量:7107 次
发布时间:2019-06-28

本文共 2091 字,大约阅读时间需要 6 分钟。

  System.Object是所有类型的基类,任何类型都直接或间接继承自System.Object类。没有指定基类的类型都默认继承于System.Object,从而具有Object的基本特性,这些特性

主要包括:

  通过GetType方法,获取对象类型信息。

  通过Equals、ReferenceEquals和==,实现对象判等。

  通过ToString方法,获取对象字符串信息 ,默认返回对象类型全名。

  通过MemberwiseClone方法,实现对象实例的浅拷贝。

  通过GetHashCode方法,获取对象的值的散列码。

  通过Finalize方法,在垃圾回收时进行资源清理。

1.ToString解析

  ToString是一个虚方法,用于返回对象的字符串表示,在Object类型的实现可以表示为:

public virtual string ToString()

{ return this.GetType().FullName.ToString(); }

  可见,默认情况下,对象调用ToString方法将返回类型全名称,也就是命名空间加类型名全称。在通常的情况下,ToString方法提供了在子类中重新覆写基类方法而获取对象当前值的字符串信息的合理途径。

2.GetType解析

 

ContractedBlock.gif
ExpandedBlockStart.gif
示例代码
 
1
class
MyType
2
{
3
private
int
number
=
0
;
4
private
string
name
=
null
;
5
public
static
void
ShowType(
string
type,
string
info)
6
{
7
Console.WriteLine(
"
This type is MyType.
"
);
8
}
9
private
void
ShowNumber()
10
{
11
Console.WriteLine(number.ToString());
12
}
13
}
14
class
Test_GetType
15
{
16
public
static
void
Main()
17
{
18
MyType mt
=
new
MyType();
//
根据Type实例查找类型成员
19
 
Type tp
=
Type.GetType(
"
Project3.MyType
"
);
20
foreach
(MemberInfo info
in
tp.GetMembers())
21
{ Console.WriteLine(
"
The member is {0}, {1}
"
, info.Name, info.DeclaringType); }
22
//
根据Type实例查找类型方法
23
 
foreach
(MethodInfo mi
in
tp.GetMethods())
24
{
25
Console.WriteLine(
"
The method is {0}
"
, mi.ToString());
26
//
查找方法参数信息
27
ParameterInfo[] pis
=
mi.GetParameters();
28
foreach
(ParameterInfo pi
in
pis)
29
{
30
Console.WriteLine(
"
{0}'s member is {1}
"
, mi.ToString(), pi.ToString());
31
}
32
}
33
}
34
}

  .NET中,用于在运行期获取类型Type实例的方法并非只有Object.GetType方法,Type.GetType静态方法和typeof运算符也能完成同样的操作,不过在应用上有些区别,

主要是:  1.Type.GetType是非强类型方法;而typeof运算符支持强类型。

             2.Type.GetType支持运行时跨程序集反射,以解决动态引用;而typeof只能支持静态引用。

另外,对于在运行期获取Type实例的方法,还可参考以下几种常见的方式

主要包括: 1.利用System.Reflection.Assembly的非静态方法GetType或GetTypes。

               2.利用System.Reflection.Module的非静态方法GetType或GetTypes。

3.其他

Equals静态方法、虚方法和ReferenceEquals方法用于对象判等。

  GetHashCode方法,用于在类型中提供哈希值,以应用于哈希算法或哈希表,不过值得注意的是对Equals方法和GetHashCode方法的覆写要保持统一,因为两个对象的值相等,其哈希码也应该相等,否则仅覆写Equals而不改变GetHashCode,会导致编译器抛出警告信息。

  Memberwise方法,用于在对象克隆时实现对象的浅拷贝

  Finalize方法,用于在垃圾回收时实现资源清理

转载于:https://www.cnblogs.com/gaodao/archive/2011/05/05/2037389.html

你可能感兴趣的文章
JAVA设计模式之单例模式
查看>>
Ansible@一个高效的配置管理工具--Ansible configure management--翻译(五)
查看>>
为啥百度、网易、小米都用Python?Python的用途是什么?
查看>>
Linux系统IO分析工具之iotop常用参数介绍
查看>>
软件的依赖关系:类图关系:is-a has-a use-a
查看>>
2010年美国计算机图书市场报告四:编程语言
查看>>
ME525+ MB525 android2.3.4获取ROOT权限和关闭震动(振动反馈)的方法分享
查看>>
C函数适配器
查看>>
bitrock 他家有绝活
查看>>
mysql用户管理
查看>>
IE的坏脾气——3像素Bug
查看>>
PHP+Oracle Instant Client
查看>>
Linux创建LVM
查看>>
HDU 4770 Lights Against Dudely (2013杭州赛区1001题,暴力枚举)
查看>>
[转]Javascript的匿名函数
查看>>
VirtualBox开发环境的搭建详解(转)
查看>>
创业的需求分析——创业杂记【1】
查看>>
STL中的nth_element()方法的使用
查看>>
安装jenkins插件的两种方法
查看>>
R quantile函数 | cut函数 | sample函数 | all函数 | scale函数 | do.call函数
查看>>