文中对於实质型别与参考型别的差异,借用了小山的YOUTUBE影片,他讲得简单易懂
数值型别(实质型别) Value Type:
直接在已宣告变数的记忆体上储存一个值。
参考型别 Referance Type:
变数存放的是储存资料所在的记忆体位置
(在记忆体HEAP堆积区中)。
记忆体HEAP堆积区存放的是不可预测的资料,就是在程序执行後,我才知道要使用多少记忆体。
本图片参考(对不起,这张图做得太好了,直接拿来用一下,谢谢C姐的制作)
邦友CynthiaChuang的文章图片
资料溢位 overflow
当数值指定给某个变数时,若超出他所能储存的容量,就会造成资料溢位,这时IDE就会提示错误。
例如sbyte只能存放 -128 ~ 127 ,如果放入128就会爆掉,就有点像小箱子装不下太大的东西一样。
浮点数
必须在数值後加上"f"或是"F"
,或使用强制转型,否则会出现错误,因为C#会将浮点数数值预设成double型别
,因此要把double型别的数值指定给float型别的变数时,有可会发生overflo
,所以要使用型别转换
。float a;
a = 2.3f
a = (float)2.3;
布林值
true 、 false
。bool fg = true;
字串
字串是一种参考型别的资料型态,宣告时要用两个双引号
包住
string str = "a"
string str1 = "Hello World!";
string str3 = "哈罗 您好";
逸出字元(Escape)
当我们的字串中要显示一些已经被系统拿来用的符号时,就要使用逸出字元[ \ ]
,在要显示的字元前加上 [ \ ],就会如实的显示。
string str3 = "\"Mary\" 的脾气很好!"; 这时候就会显示"Marry" 的脾气很好!
var
var又称为隐含型别的变数,不用去明确指定变数型别,C#编译器会去自动判断要给予的型别
。
var i = 10; 判定i为整数型别
var k = 10.2; 判定k为浮点数型别
var skr = "你好!"; 判定skr为字串型别
使用var宣告有以下规范
1.必须指定初始值
2.不能指定函数的参数
3.可用来命名,但会失去宣告的功能
4.一个var一次只能宣告一个变数 (後面不能加[ , ]来宣告多个变数)
值域小
的型别转换
成值域大
的型别会发生自动型别转换
(把小箱子装进大箱子里的感觉)char、浮点数、decimal之间不存在隐含转型
short a = 5;
int i, j = 123;
i = a; a会由short → int
s = j; j是int(值域大),s是short(值域小),会发生错误
变数运算过程中,因转型而失去正确性,或编译器无法成功隐含转型,就要进行强制转型
short s;
int j;
s = (short)j;
将j强制转型成short型别
但强制转行有时会一定会失去正确性
short s;
int j = 12345678;
s = (short)j;
虽然转型可以成功,但s的值却不会是12345678,因为放下不,这时就失去正确性
转型时要注意,转型後是否为相似型别的值
string str1 = "123";
string str2 = "Hello";
int i, j;
i = (int)str1; 能成功将123指定给int型态的i
j = (int)str2; 字串Hello无法被转换成任何的数值,会发生错误
short s;
int j;
s = Conver.ToInt16(j);
将j强制转型成short型别
short s;
int j;
s = j.ToInt16();
将j强制转型成short型别
也可以使用ToChar、ToSingle、ToDouble、ToSbyte、ToInt32、ToInt64、ToUint32、ToUint16、ToString...等等
>>: 我是一名对python技术感兴趣的亚马逊运营,但是反爬问题困扰了我很久
上一次介绍了各种表单的使用 那麽实战练习必不可少呀! 今天就演练演练自制待办清单吧 首先来看一下想做...
本文同步更新於blog Singleton Pattern 确保一个类只有一个实例,并提供一个全局...
陈述式(Statement) JavaScript 语句类型,用於命令执行指定一系列操作,最大的特徵...
Dart是什麽? Dart 是一个静态强型别的语言,同时支援物件导向程序设计(OOP)及函数式程序设...
Python虚拟环境的主要目的是为不同的Python项目创建一个彼此独立且隔离的环境。这样我们可以在...