C# 复制值类型的变量和类
C#大多数基元类型包括int、float、double、和char等,注意这里不包括string,这些都是值类型。将变量声明为值类型,编译器会生成代码来分配足以容纳这个值得内存块。编译器分配内存的时候并不是分配一个能够容纳整个类的内存块,它唯一做的事情就是分配一个这个类的地址。
c#的string实际是类类型。由于字符大小不固定,所以分配的是一个动态的内存,而不是编译的时候分配一个静态。
引用类型的复制与私有数据:
要将一个引用类型的某个对象,复制给另一个引用类型的某个对象,不能直接复制引用,必须让这个引用类型应用需要复制类的新实例,再将数据字段从上一个引用类型中复制出来。但是如果需要复制的这个字段在类中的属性是私有的,就不能复制这个数据,私有字段作为属性公开,再通过属性读取这个数据并复制出来。另外,类可以提供clone方法来返回自己的新实例,并填充相同的数据,clone方法能够访问对象的私有数据,并直接将数据复制到同一个类中的另一个实例中去。
这个位置我们需要知道私有数据到底 私有 在哪个位置,private关键字创建了不能从类外访问的字段或方法。 但是,并不是说它只能单过对象访问,创建同一个类的两个对象,他们分别能够范围对象的私有数据。clone就是依赖这个原理实现的,clone.a = this.a;这样之所以能够工作,正式因为可以从a类的当前实例中访问clone对象的私有a字段,所以 私有 实际指的是在 类的级别上私有 并不是在对象级别上私有 私有和静态也是两码事,字段声明为私有,类的每个实例都有一份自己的数据,声明为静态,每个实例都共享同一份数据。
C# 复制值类型的变量和类的更多相关文章
- python限定方法参数类型、返回值类型、变量类型等
typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints) 类型检查,防止运行时出现参数和返回值类型.变量类型不符合. 作为开发文档附加说明,方 ...
- js基本语法之 值类型(数据类型)(变量类型)
一.不可改变的原始值(栈数据)(五个) 数字(number),字符串(string),布尔值(boolean),undefined,null 其中;undefined是未定义的意思,而null是空的意 ...
- 3、二、c# 面向对像编程。类,结构、C# 数据类型(引用类型、值 类型、指针类型)、ref参数与out参数、方法的重载、静态类型与静态成员、继承与多态、委托与事件
一.类 定义类使用class关键字. <access specifier> class class_name { // member variables 成员变量 <access s ...
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
1.C#类和接口的区别接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽 ...
- Java学习笔记13---如何理解“子类重写父类方法时,返回值若为类类型,则必须与父类返回值类型相同或为其子类”
子类重新实现父类的方法称重写:重写时可以修改访问权限修饰符和返回值,方法名和参数类型及个数都不可以修改:仅当返回值为类类型时,重写的方法才可以修改返回值类型,且必须是父类方法返回值的子类:要么就不修改 ...
- golang中值类型/指针类型的变量区别总结
转自:https://segmentfault.com/a/1190000012329213 值类型的变量和指针类型的变量 先声明一个结构体: type T struct { Name string ...
- C#-变量类型(值类型、引用类型)
第一次发这样的笔记呢! 这个是在再读基础的时候感觉自己理解的东西吧 变量的类型差异在数据的存储方式不一样,值类型是变量本身直接存储数据,另一个则是存储实际变量的引用, 值类型:都是存储在栈中的,都是直 ...
- 匹夫细说C#:不是“栈类型”的值类型,从生命周期聊存储位置
0x00 前言: 匹夫在日常和别人交流的时候,常常会发现一旦讨论涉及到“类型”,话题的热度就会立马升温,因为很多似是而非.或者片面的概念常常被人们当做是全面和正确的答案.加之最近在园子看到有人翻译的& ...
- .NET面试题解析(01)-值类型与引用类型
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 常见面试题目: 1. 值类型和引用类型的区别? 2. 结构和类的区别? 3. delegate是引用类型还 ...
随机推荐
- MyBatis学习(01)之解决mapper绑定异常
解决mapper绑定异常 HTTP Status 500 - Request processing failed; nested exception is org.apache.ibatis.bind ...
- mysql 初识数据库 目录
数据库管理软件的由来 数据库概述 MySQL介绍 Window版本 安装mysql linux 安装mysql yum方式 windows平台mysql密码设置 windows平台mysql密码破解设 ...
- 注意:WordPress栏目别名slug不要设为p
这几天ytkah接了一个WordPress项目,没用多少时间就搞定了,交付给甲方使用,刚开始还算顺利,突然有一天其中一个栏目及栏目下是文章都无法访问了,出现404页面,其他页面都可以.询问他们最近改动 ...
- what's the python之面向对象
编程分为面向过程和面向对象,首先我们要了解什么是面向对象. 面向对象 面向过程就是我们之前学的内容,主要是函数式,其核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全 ...
- Py中reshape中的-1表示什么【转载】
转自:https://blog.csdn.net/weixin_39449570/article/details/78619196 1.新数组的shape属性应该要与原来数组的一致,即新数组元素数量与 ...
- 配置Tomcat启用Https安全协议的访问
1.首先使用keytool工具生成证书文件名为cnkey,然后拷贝此证书即文件到tomcat安装目录conf下(放到哪里都行,主要在下面配置中指明路径就好了.这里我就放这了conf) 2.配置serv ...
- [LeetCode] 884. Uncommon Words from Two Sentences_Easy tag: Hash Table
We are given two sentences A and B. (A sentence is a string of space separated words. Each word co ...
- Python的Matplotlib库简述
Matplotlib 库是 python 的数据可视化库import matplotlib.pyplot as plt 1.字符串转化为日期 unrate = pd.read_csv("un ...
- mac console color setting
1. 编辑文件 ~/.bash_profile 添加 export CLICOLOR=1 export LSCOLORS=GxFxCxDxBxegedabagaced 2. 加载生效 source ~ ...
- 带下拉列表的TextBox
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...