c# System.Object类和数据的安全转型
.NET Fraework 最重要的引用类型之一是System命名空间中Object类。所有的类都是System.Object的派生类。System.Object类型的变量System.Object的别名。可以写成Object。优先考虑Object
Object类型的变量能够引用任何引用类型的任何对象。除此之外Object类型的变量也能引用值类型的实例。
在强制类型转换的过程中,如果内存中的对象类型与指定的类型不匹配,运行时会抛出InavalidCastException异常,在编写程序的时候,赢考虑捕捉这种异常,并在发生时进行相应的处理。但是,在对象类型不符合预期的情况下捕捉异常并试图恢复应用程序的顺利执行,这是一个相当繁琐的过程,c#提供了两个相当有用的操作符,能以更加得体的方式执行转型,is和as操作符
is操作符:通过检测可以看出下面转型是安全的。

is操作符取两个操作数:左边对象引用,右边是类型名称。如果左边的对象是右边的类型,则is返回结果true,反之为false。
as操作符:
as操作符充当is操作符类似的角色,只是功能稍微进行了删减。可以像下面这样使用as操作符。使用as操作符如果转换成功返回成功后的结果,否则返回null

unsafe关键字:
不安全,可以标记代码块或者这个方法,编译包含unsafe代码的程序时,必须在生成项目时指定“允许不安全的代码”选项做法是咋解决方案资源管理器中右击项目名称------》属性------》生成------》选择“允许不安全的代码”--------》选择文件全部保存。
unsafe代码关系到内存的管理方式;unsafe代码中创建的对象被称为“非托管”对象,虽然不常见,但偶尔也需要以这种方式访问内训,尤其是在一些低级Windows操作时。
c# System.Object类和数据的安全转型的更多相关文章
- Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
- 定义类、System.Object对象、构造函数与析构函数、抽象类与静态类
一.类定义 class MyClass { //类成员 } 1.访问级别 默认访问级别为internal(内部类),也可以是public(公共类) internal(内部类):当前项目中的代码才能访问 ...
- 【c# 学习笔记】所有类的父类:System.object
在c#中,所有的类都派生自System.Object类.如果定义的类,没有直达任何基类,编译器就会自动把Object类当作它的基类.和其他类 一样,System.Object类也定义了一组共有的成员, ...
- 第4章 类型基础 -- 4.1 所有类型都从System.Object派生
4.1 所有类型都从System.Object派生 “运行时”要求每个类型最终都从System.Object类型派生. 由于所有类型最终都从System.Object派生,所以每个类型的每个对象都保证 ...
- C# 之 System.Object
System.Object C#中全部的类都直接或间接继承自System.Object类,这使得C#中的类得以单根继承.假设我们没有明白指定继承类,编译器缺省觉得该类继承自System.Obj ...
- Object类.时间日期类.System类.Stringbuilder类.包装类
Object类 java.lang.Object类是java语言中的根类,即所有类的父类.它中描述的所有方法都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类, ...
- Object类、日期时间类、system类及StringBuilder字符串容器
一.Object类常用API 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.Object类中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是 ...
- 日期类&&包装类&&System类&&Math类&&Arrays数组类&&大数据类
day 07 日期类 Date 构造函数 Date():返还当前日期. Date(long date):返还指定日期 date:时间戳--->距离1970年1月1日 零时的毫秒数 常用方法 日期 ...
- JAVA集合类简要笔记 - 内部类 包装类 Object类 String类 BigDecimal类 system类
常用类 内部类 成员内部类.静态内部类.局部内部类.匿名内部类 概念:在一个类的内部再定义一个完整的类 特点: 编译之后可生成独立的字节码文件 内部类可直接访问外部类私有成员,而不破坏封装 可为外部类 ...
随机推荐
- spring JdbcTemplate数据库
DAO package DAO; import org.springframework.jdbc.core.JdbcTemplate; public class OrderDao { private ...
- 配置python开发环境(Eclipse + pyDev)
jdk-11.0.2eclipse 2018-12python 3.7.2 1. install jdk, 配置环境变量 新建JAVA_HOME 系统变量,C:\Program Files\Java\ ...
- PHP读取HTML生成doc
PHP代码如下: <?php //获取1.html文档的内容(包括html代码) $result = file_get_contents('./word.html'); echo "$ ...
- java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory
java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to java ...
- 关于Kafka broker IO的讨论
Apache Kafka是大量使用磁盘和页缓存(page cache)的,特别是对page cache的应用被视为是Kafka实现高吞吐量的重要因素之一.实际场景中用户调整page cache的手段并 ...
- Ionic异常及解决
1. 编译时提示: ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontV ...
- springboot中Properties注解的实现
关于@PropertySources注解的理解:http://www.imooc.com/article/252889?block_id=tuijian_wz public interface Pro ...
- 14 CSS题目附答案
转载自公众号:web前端开发 原文题目:45道CSS基础面试题(附答案) 1. 介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的? 标准盒子模型:宽度=内容的宽度(content) ...
- 一些关于SQL优化的总结
由于这个项目一直都是mysql所以写点mysql的 1.数据存储引擎的选择,MyISAM 和 InnoDB 的选择 InnoDB 一般都会选择这个,但是如果真的涉及到一些不涉及增删的表,可以考虑下My ...
- 文本编辑器vim和gedit
vim和gedit都是文本编辑器 vim用法: vim 文件名 #打开文件 输入 i,进入文本编辑模式,编辑完再按ESC,退出编辑模式,再输:wq,保存退出:如果输:q!则是不保存退出,很简单.. 如 ...