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是引用类型还 ...
随机推荐
- LeetCode-714.Best Time to Buy and Sell Stock with Transaction Fee
Your are given an array of integers prices, for which the i-th element is the price of a given stock ...
- python 遇到的问题及解答
1.使用pip安装python 模块 打开cmd 输入pip install *,如pip install numpy 等待安装(如下) C:\WINDOWS\System32>pip i ...
- tr 命令
[root@localhost .txt abcdefg [root@localhost .txt |tr [a-z] [A-Z] ABCDEFG // 把文件小写字母变成大写字母
- RN TextInput用法
效果图: 代码: import React, {Component} from 'react' import {StyleSheet, View, Text, TouchableOpacity, Te ...
- oracle sql 游标的简单用法(tip:sql中两个单引号表示一个单引号)
--游标遍历某个字段 (打印出来) declare res_sql varchar2(2000); cursor cur is select f_dcnam ...
- jsp fmt标签格式化double数字
<fmt:formatNumber value="${zjdl.ygdl }" pattern="0.00" />
- vue中让input框自动聚焦
created(){ this.changfouce(); }, methods: { //在vue生命周期的created()钩子函数进行的DOM操作要放在Vue.nextTick()的回调函数中, ...
- C语言编程练习
1.编程序实现求1-1000之间的所有奇数的和并输出. 解法1: int sum=0; for(int i=1;i<=1000;i++){ sum+=i%2?i:0; } printf(&quo ...
- linux下禁止root远程登录和添加新用户
https://www.cnblogs.com/jianz/p/7979250.html 一.添加和root权限一样的用户 1. adduser admin passwd admin (修改密码) ...
- 添加了unimportant 之后,需要调整的参数
count = count1+count2-count_unimportant_union*10 这个10需要调参.因为我们TOPN取的是10,所以如果两个词完全相同,正常情况下会有22个非0值.( ...