博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#面向对象(四):其他面向对象知识
阅读量:6704 次
发布时间:2019-06-25

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

前文链接:

  今天是这个系列的收尾文章了,来谈谈其他面向对象知识。

1.嵌套类

  1.1概念

  在 C#中可以将一个类定义在另一个类的内部;外面的类叫“外部类”,内部的类叫“嵌套类”;

嵌套类和普通类相似,只是声明的位置比较特殊。

  1.2注意事项

  如果想实例化内部类的话, 需要使用 外部类名.内部类名 的方式访问到内部类。

//声明一个嵌套类的对象.            Person.Web w = new Person.Web();            w.webName = "擅码网";            w.webUrl = "www.mkcode.net";            w.Show();

2.匿名类anonymous class

  2.1概念

  如果某个类的实例对象只会使用到一次, 可以使用匿名类的方式创建这个对。

  不需要定义类, 我们就可以创建一个对象。这样的类一般用于存储一组只读属性。

2.2代码格式

var p = new { Name = "Monkey", Age = 100 };//匿名类.var mk = new { Name = "lkk", Age = 100, Address = "山东" };//mk.Name = "李开坤";Console.WriteLine("姓名:{0}, 年龄:{1}, 地址:{2}", mk.Name, mk.Age, mk.Address);

只读的属性

assigned to 赋值

3.密封类sealed class

概念:被sealed关键字修饰过的类不可以被继承,也就是说不能有子类;这样的类, 通常被称之为“ 密封类” 。

4.Object 类

概念:在 C#语言中, Object 类是所有类的父类,在C#中所有的类(内置的,我们自己创建的)都直接或者间接继承自Object类。

Object 是类,object是类型。(类与系统关键字的语法颜色区别)

第一个是一个类,第二个是一个类型

小写的是大写的别称。

 

  额外的四个就是object类里有的方法。

  重写 ToString 方法:我们经常会在自己的类中重写 ToString 方法, 将类中的信息打印输出。

目的是:辅助调试和开发。

public override string ToString(){return string.Format("{0}--{1}--{2}", name, age, address);}

5装箱与拆箱

概念:

装箱:值类型-->引用类型

拆箱:引用类型-->值类型

两种类型只有存在继承关系的时候, 才可能出现装箱或拆箱操作。

int a = 10;            Console.WriteLine(a);            object b = a;           //装箱操作. 值类型-->引用类型.            Console.WriteLine(b);            a = (int)b;             //拆箱操作. 引用类型-->值类型.            Console.WriteLine(a);

注意事项

装箱和拆箱本质上是数据存储在栈空间与堆空间之间变更,因此频繁的装箱或拆

箱会降低代所以代码中尽量少用装箱或拆箱操作。

6.预编译指令

什么是预编译指令?

预编译指令也叫预处理指令, 在程序正式编译之前执行。

这些指令不会转化为可执行代码中的命令,但是会影响编译过程的各个方面。

7.对象初始化器

概念

在一个类中, 我们通常使用构造方法来对属性进行赋值,完成对象的初始化。

但是当一个类中的属性很多很多的时候,不可能为各种情况都定义构造方法,这

个时候可以使用“ 对象初始化器” 来完成属性的赋值。

语法格式:

类名 对象名 = new 类名(){属性名 = 值; 属性名 = 值};

Person p1 = new Person() { Name = "lkk", Age = 100 };            Person p2 = new Person() { Name = "擅码网" };            Person p3 = new Person() { Age = 111, Address = "山东" };

 

转载于:https://www.cnblogs.com/qixinbo/p/8249707.html

你可能感兴趣的文章
SQL 学习笔记
查看>>
iOS 微信支付(服务端下单)
查看>>
记一次Promise在api接口合并中的实践
查看>>
go-kit微服务:一个简单的API网关
查看>>
Matrix源码分析————IO Canary
查看>>
Binder机制
查看>>
JS原型相关
查看>>
手把手教你使用Js实现前后台传送Json
查看>>
2018年规划
查看>>
关于行框盒子与vertical-align(一)
查看>>
修复苹果iOS 原生键盘遮挡input框
查看>>
学习编程,只跟对的人
查看>>
AQS源码详解
查看>>
AndroidSerialPort:安卓串口通信库
查看>>
咦,Oreo怎么收不到广播了?
查看>>
前端从头搭建个人博客
查看>>
Flask入门学习---初步了解模板
查看>>
spring-控制反转IoC
查看>>
spring cloud微服务分布式云架构(三)-服务消费者(Feign)
查看>>
区块链软件公司:区块链的金融化体系
查看>>