您的位置:首页 > 编程语言 > C#

C#高级编程学习日记之C#基础之变量和预定义数据类型

2011-12-15 00:14 435 查看
题外话:今天看到有一个园主的博客里面说的学习之塔,探讨了如何提高学习效率的问题。很受启发,自己学习程序却没有坚持程序。却一直从事程序二线实施,现在想重新拾起那些厚厚的课本走上一线。时间就是金钱,如何快速的提高自己的水平呢?

阅读

培训

向先进者学习

辅导他人学习

日记与博客

培训现在还没有条件,辅导他人学习是不大靠普的,自己对程序理解的还很浅。阅读,总结阅读。最为适合自己的学习方式,坚持下去。

好了,一切从基础开始《C#高级编程》。第一章,.Net的体系结构。最基础,却也很高深。实话,现在读不懂。没事儿,老师曾教导我们说:看不懂,没有关系,先当小说看。然后回过头去看,理解起来就不那么痛苦了。个人总结:编程语言C#和.Net之间的关系。有点像微软的Office和操作系统 的关系,要想高效的办公,不仅需要office这个工具,还需要window系统。没有操作系统的支持,好用的地office工具总不能安转载裸机上吧。没有系统,再高效的office也没用。同样,没有.Net framework x.x编写再好的程序。却无用武之地,使用开发C#需要.net framework。

第二章有14个小结,前面的hello word就省略了。从变量开始说起,平时操作变量操作贯了。却没有总结过,变量,理解:变化的量,量:计量,数量,数的多少。数:整数,小数。(想到的就是这么多了),程序里面表示为(常见):int,float。单词:variable。声明:datatype identifier;例如:int i;这样就声明了一个装整数的变量:取名叫i,这个i就能装整数,可以装负整数和正整数。装多大(多小),看数据类型一会儿写出来,变量倒是声明出来了,有什么用呢?把数据保存到电脑,保存起来有什么用?处理数据,简单作用从电脑屏幕打印出来。Int I; i=10;Console.WriteLIne(i);i=11;Console.WriteLine(i);个人理解:找来一个容器(装整数的),在容器里面放10这个数,从Dos窗体输出容器里的东西。继续这时候把容器的东西变一下,变成11,然后再输出。当然还能换别的东西(负整数也可以)。需要注意的是:要对变量进行处理(比方:打印到屏幕)。有个前提,变量里有东西,才能处理。就声明一个变量,如果不对其赋值。就处理程序就要异常。为何?我们要处理容器里的东西,容器里面没有东西。处理还有意义吗?所以.Net禁止使用未赋值的变量。(结果是错误)

变量

变量的初始化。

概括起来:c#的变量在使用前,必须初始化。那.net又是如何判断的呢?两个方法

变量如果是类或结构中的字段,创建这些变量时其值就是默认。

方法的局部变量必须在代码中显示的初始化,之后才能再语句中使用变量。

.net是怎么做到的呢?不关心,如果不这么做,。Net会怎么样呢?会很生气,后果很严重。报错:使用了未初始化的变量。英语怎么说:忘了。。。。

var:网络上有一种说法:变数。这解释有些靠谱,变着戏法的识别数据。专业一点的说法:类型推断,数据类型的推断。就是根据数据类型自动推断,变着戏法的推断数据类型。且推断十分准确,不管什么类型都能推断出来。除非:这个类型没有被初始化。

言外之意:类型推断必须是对有了值得数据类型进行推断。没值,没法推断。

变量的作用域。(这个变量的使用范围)
在同一个花括号内有效。

在同一个花括号内不能声明两个相同类型,相同名字的变量。
例如:{int i=1;int i=2;},错误,也包括{int i=1;{int i=2;}},这样也不行。 但两个for循环不嵌套也能声明为同类型,同名的变量。两个for的花括号是独立的花括号。

与变量相对的就是常量
理解:定义并且马上赋值,且在其作用域内不能修改。例如:const int i=10;

不能把变量给常量,即使变量已有值。如:int i=1; const j=I;//这样是错误的

常量是静态的,但不必在常量声明中定义'static'

预定义数据类型





 
 



 
 

 
 

差别:

值类型:直接存储值,存放在内存的堆栈中。

引用类型:存储值得引用地址,存放在内存的托管堆中。

值类型包括:

类型

名称

CTS类型

说明

范围

类型

类型

整数

有符号

sbyte

System.SByte 

1个字节的有符号整数。1个字节有8位,2的8次方-1就是它的最大值

SByte.MaxValue| SByte.MinValue

short

System.Int16 

2个字节的有符号

  

int 

System.Int32 

4个字节的有符号

  

long 

System.Int64 

8个字节的有符号,默认声明是:int类型,需要显示声明:如long longNum=123L;

  

无符号

byte 

System.Byte

1个字节的无符号

  

ushort 

System.Uint16 

2个字节的无符号

  

uint

System.Uint32 

4个字节的无符号,默认声明是:int类型,需要显示声明:如uint longNum=123U;

  

ulong 

System.UInt64

8个字节的无符号, 默认声明是:int类型,需要显示声明:如ulong longNum=123UL;

  

小数

单精度

float 

System.Single

4个字节单精度,最长小数点7位。默认声明:double类型,需要显示声明:如:float f=123.123F;

  

双精度

double 

System.Double

8个字节双精度,最长小数点 15|16位

  

多精度

decimal 

System.Decimal

16个字节的多精度,最长小数点 128位,同要需要指定类型,decimal d=25.25365M;

  

字符

char 

System.Char

2个字节的unicode字符

  

布尔

bool

System.Boolean

true或false

  

 
 

引用类型包括

类型

名称

CTS类型

说明

对象类型

object

System.Object

  

字符串

string

System.String

Unicode字符串

使用object类型的目的

使用object引用绑定任何子类型对象。

object类型执行许多一般用途的基本方法。

string对象保留在堆上,而不是堆栈里。因此,当把一个字符串变量赋值给另一个字符串时。会得到内存中同一个字符串的两个引用,但又与引用类型有些区别,那就是修改其中一个字符串,就会创建一个全新的string对象。而另一个字符串没有改变

理解起来有些困难就直接操下来,以后再慢慢理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐