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类
常用类 内部类 成员内部类.静态内部类.局部内部类.匿名内部类 概念:在一个类的内部再定义一个完整的类 特点: 编译之后可生成独立的字节码文件 内部类可直接访问外部类私有成员,而不破坏封装 可为外部类 ...
随机推荐
- js 正则表达式验证网站域名
正则表达式 ^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$
- c++ 模板相关
https://blog.csdn.net/lezardfu/article/details/60466161 https://www.cnblogs.com/ymy124/p/3632634.htm ...
- Nestjs 获取cookie
Docs yarn add cookie-parser main.ts import { NestFactory } from '@nestjs/core'; import { AppModule } ...
- CPanel/服务器文件及目录
cPanel服务器默认的各主要目录及配置文件的路径.cPanel服务器很多配置文件的路径和通常情况下安装LAMP的不同,另外还有很多是属于cPanel面板自己的配置文件. 目录 1 Apache 2 ...
- 14:CSS3 渐变(gradient)与 过度(transition)、CSS3 的2D动画
14:CSS3 渐变 CSS3 渐变(gradient)可以让你在两个或多个指定的颜色之间显示平稳的过渡. 以前,你必须使用图像来实现这些效果,现在通过使用 CSS3 的渐变(gradients)即可 ...
- elk-插件(head、X-pack)(五)
一.修改ES配置,允许REST跨源操作ES服务器,添加以下2个配置,并重启ES. http.cors.enabled: true #如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST ...
- 网站美化:CSS3自定义修改浏览器滚动条
滚动条组件 ::-webkit-scrollbar //滚动条整体部分 ::-webkit-scrollbar-thumb //滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还 ...
- Codeforces 607A - Chain Reaction - [DP+二分]
题目链接:https://codeforces.com/problemset/problem/607/A 题意: 有 $n$ 个塔排成一行,第 $i$ 个激光塔的位置为 $a_i$,伤害范围是 $b_ ...
- Swagger学习笔记
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Swagger学习笔记 课程目标 了解Swagger的概念及作用 掌握在项目中集成Swagger ...
- 添加一个Activity
#Android中增加一个Activity 1. 在AndroidManifest.xml中增加: <activity android:name="com.example.NewAct ...