c# 基础 object ,new操作符,类型转换
参考页面:
http://www.yuanjiaocheng.net/webapi/config-webapi.html
http://www.yuanjiaocheng.net/webapi/web-api-route.html
http://www.yuanjiaocheng.net/webapi/parameter-binding.html
http://www.yuanjiaocheng.net/webapi/action-method-returntype.html
http://www.yuanjiaocheng.net/webapi/web-api-reqresq-format.html
所有类型最终都从System.Object类型派生。
最基本方法(object的公共方法):
1.Equals:如果两个对象具有相同的值,返回true.
2.GetHashCode:返回对象值得一个哈希码,如果某个类型的对象要在一个哈希表集合众作为key使用,该类型应重写该方法。
3.ToSting,返回一个String对象
4.GetType:返回从Typt派生的一个对象实例,指出该对象是什么类型。返回的type对象可以和反射类配合使用,从而获取与对象的类型有关的元数据信息。
以下为受保护的方法
5.MemberwiseClon:非虚方法,能创建类型的一个新实例,并将新对象的实例字段设与this对象的实例字段完全一致,返回的是一个对新实例的一个引用。
6.Finalize:在垃圾回收时会调用该虚方法。
关于new操作符 曹衍涛
Employee e=new Employee("ConstructorParam1");
1.他计算类型及其所有基类型中定义的所有实力字段需要的字节数。 堆上每一个对象都需要一些额外成员——“类型对象指针(type object pointer)
”和“同步索引块(sync block index)”,这些成员由ClR(common language runtime)用于管理对象。这些额外成员的字节数会计入对象大小。
2.他从托管堆中分配制定类型要求的字节数,从而分配对象的内存,分配的所有字节都设为零。
3.他初始化对象的类型对象指针和同步索引成员。
4.调用类型的实例构造器,向其传入在对new的调用中制定的任何实参。(上边ConstructorParam1即为实参)
new执行完这些操作后会返回指向新建对象一个引用(或指针)。上边这个引用会保存到变量e中,后者具有Employee类型
无法显示释放分配给一个对象的内存,CLR采用垃圾回收机制。
类型转换
CLR最重要的特性之一就是类型安全性。
c#可以随意将一个对象转换为他的任何基类,当将该类型转化为他的派生类时需要进行显示转换,该转换可能会在运行时失败。
使用is和as操作符来转型
is检查一个对象是否兼容于指定类型,返回true或false,is操作符不会抛出异常。
Object o=new Object();
Boolean b1 =(o is Object)//返回true
Boolean b2 =(o is Employee)//返回false
如果对象引用为null,总是返回false
is通常这样使用
if(o is Employee)
{
Employee e=(Employee) o;
//在if剩余语句中用e
}
这样写CLR实际检查了两遍数据类型
as为其简化写法
Employee e= o as Employee;
if(e!=null)
{
//剩余语句用e
}
这样写CLR检查o是否兼容Employee,是的话返回同一对象的非null引用。
c# 基础 object ,new操作符,类型转换的更多相关文章
- JS基础-变量类型和类型转换
JS 变量类型 JS中有 6 种原始值,分别是: boolean number string undefined symbol null 引用类型: 对象 数组 函数 JS中使用typeof能得到哪些 ...
- LINQ系列:Linq to Object投影操作符
投影是指在将序列中的元素转换为一个自定义形式的操作.投影操作符Select和SelectMany用于选择出赋予了适当功能的值.SelectMany操作符可以处理多个集合. LINQ表达式语法: 1. ...
- LINQ系列:Linq to Object生成操作符
生成操作符从现有序列值中创建新的序列. 1. Empty Empty操作符返回一个指定类型的空集. 1>. 原型定义 public static IEnumerable<TResult& ...
- LINQ系列:Linq to Object转换操作符
转换是指将输入对象的类型转变为序列的动作. 1. AsEnumerable AsEnumerable操作符将查询的输入以IEnumberable(T)类型返回. 2. Cast Cast操作符将IEn ...
- LINQ系列:Linq to Object量词操作符
量词操作符返回一个Boolean值,指示序列中是否存在部分或全部元素符号指定条件.LINQ中量词操作符包括:All.Any和Contains. 1. All All操作符判定在集合中是否所有的值都满足 ...
- javascript基础(二)类型转换
原文http://pij.robinqu.me/ 类型转换 当期望使用一个布尔值的时候,可以提供任意类型值,JavaScript将根据需要自行转换类型.类型转换可以分为隐式转换和显式转换. 显式转换 ...
- HTML基础--元素类型及类型转换
元素类型及类型转换 一.XHTML元素分类 根据css显示分类,XHTML元素被分为三种类型:块状元素,内联元素,可变元素 1.块状元素(block element) 1)块状元素在网页中就是以块的形 ...
- C#基础 常用语&数据类型定义&类型转换
int temp = Console.Read(); Console.WriteLine(temp); Console.Read(); Console.Write(" ");直接 ...
- <基础> PHP 进阶之 类型转换
引用官方的解释 PHP 在变量定义中不需要(或不支持)明确的类型定义:变量类型是根据使用该变量的上下文所决定的.也就是说,如果把一个 string 值赋给变量$var,$var 就成了一个 strin ...
随机推荐
- vmware里面的名词 vSphere、vCenter Server、ESXI、vSphere Client
vmware里面的名词 vSphere.vCenter Server.ESXI.vSphere Client vSphere.vCenter Server.ESXI.vSphere Client VS ...
- TODO:Laravel 内置简单登录
TODO:Laravel 内置简单登录 1. 激活Laravel的Auth系统Laravel 利用 PHP 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管 ...
- MVVM TextBox的键盘事件
MVVM下RichTextBox的键盘回车事件设置为发送,不是回车 xmlns:i="http://schemas.microsoft.com/expression/2010/interac ...
- .net 分布式架构之业务消息队列
开源QQ群: .net 开源基础服务 238543768 开源地址: http://git.oschina.net/chejiangyi/Dyd.BusinessMQ ## 业务消息队列 ##业务消 ...
- C++随笔:.NET CoreCLR之GC探索(3)
有几天没写GC相关的文章了哈,今天我讲GC的方式是通过一个小的Sample来讲解,这个小的示例代码只有全部Build成功了才会有.地址为D:\coreclr2\coreclr\bin\obj\Wind ...
- 从Vue.js窥探前端行业
近年来前端开发趋势 1.旧浏览器逐渐淘汰,移动端需求增加: 旧浏览器主要指的是IE6-IE8,它是不支持ES5特性的:IE9+.chrome.sarafi.firefox对ES5是完全支持的,移动端大 ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- RMS:不能对生产服务器使用测试清单
问题说明:在使用office软件RMS加密时报:不能对生产服务器使用测试清单,或者使用 rmsbulk.exe进行RMS加密时,报不能连接到RMS服务器. 解决办法: 请到https://suppor ...
- A*算法应用[转]
转自:http://www.cnblogs.com/zhoug2020/p/3468167.html 这是一篇十分精彩/易懂的博客,感谢原博主!本文通过自己的理解在原博文基础上突出一些重点字眼,句子. ...
- DBobjectsCompareScript(数据库对象比较).sql
use master goIF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[func_CompareDBobjectsReColu ...