当前位置:
首页 > 编程开发 > Objective-C编程 >
-
C#教程之Beginner with c# 3
作者: kamphkb翻译 | ||
1。3 类型 c#支持两种基本的类型:一种是值(value types),一种是引用(reference types)。值包括简单类型 (char、int、和float),枚举(enum)和结构(struct)。引用包括类(class),界面(interface), 代表(delegate)和数组阵列(array)。值与引用不同之处在于:值直接存储它的数据内容;而引用存储对象 的引用。是不是粉费解?!打个比方吧。你在某地买了套别墅(好棒噢)。却从未去过,只知道地址,怎 么办?你可以坐出租车,司机看了地址就知道怎样走不用你操心。你手里的地址就好像对象的名字,你把 它写在程序中,就好像把地址给了司机。司机就是你的编译器,它知道该去哪。你豪华的房子就好比那个 ngws sdk开发包(82mb噢,够豪华了!俺的m啊--就这样烧喽)。房子里有你想要的东东,比如你想写一句 话(i dont like hello world),就好像上面例子,要用到“writeline”。于是,你就给出“writeline” 的地址,比如:“console.writeline”。明白?!俺可累了。zzz... (强打精神)不知道你想到没有, 值和引用的区别可以引出一个重要特性。值的变量和变量存储的数据是一一对应的,唯一性。而引用则不 然。引用中不同的变量可以引用同一个对象的实例。当其中一个变量改变实例的值时,其他引用这个实例的 变量也会受到影响(当然,变量本身并没有改变,即,地址没变)。瞧,变量只是说明存储对象的位置(地 址),而不是对象本身。就好像你漂亮的房子被烧了,但你的地址并没有改变,但地址对应的房子就没了。 也许是别人也有这个地址,他去烧了你的房子!好了,在给个例子:*/ 1: using system; 2: class cvalue 3: { 4: public int value = 0; 5: } 6: class test 7: { 8: static void main() { 9: int val1 = 0; 10: int val2 = val1; 11: val2 = 123; 12: cvalue ref1 = new cvalue(); 13: cvalue ref2 = ref1; 14: ref2.value = 123; 15: console.writeline("values: {0}, {1}", val1, val2); 16: console.writeline("refs: {0}, {1}", ref1.value, ref2.value); 17: } 18: } /* 下面是输出的结果: values: 0, 123 refs: 123, 123 啊哈,应该粉清楚了吧。变量val1和变量val2互不影响,它们各自有自己的存储空间。而ref2复制 了ref1,所以,它们引用了同一个对象的实例。当改变它们其中一个的时候,就会影响到另一个的 值。 |
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程