阿哥论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 1074|回复: 0

《C#高级编程》 读书心得1--核心C# 几点你可能没注意,但很基础的小东西。

[复制链接]

6

主题

0

好友

22

积分

IT工程师

Rank: 1

升级  44%

发表于 2013-1-1 22:09:23 |显示全部楼层
《C#高级编程》 读书心得1--核心C# 几点你可能没注意,但很基础的小东西。

<div class="postbody"><div id="cnblogs_post_body">这是本系列读书心得第一篇。
其实所谓核心C#也就是C#的语法基础,相信大家应该已经非常熟悉了,在这里说一下在书中看到,大家可能平时没有太注意到的。此篇比较基础,也是第一次写读书心得,请勿喷啊。
变量以及其作用域。
     首先声明变量:可以直接用int i; 其实它是声明一个名为i 的System.Int32的一个实例。 像int, long这样的关键字都是指向.net预定义类型,也就是说用他们声明的变量是他们所指向的.NET预定义类型的一个实例。在.net中一共有15个这样的预定义类型,13个值类型,2个引用类型(object和string)。如int 对应的System.Int32, long对应System.Int64。 就像大学的时候我们C语言的老师一直都说int变量的值范围为-32768~32767,是因为当时的C语言编译环境为16位。 还要强调一点就是string字符串在C#中为引用类型,也就是说一个string变量是存储在托管堆上的,而像int这样的值类型是存储在堆栈上。
    我们在int上按F12跳转到定义就会看到它其实是一个结构体:public struct Int32, 所一它存储在堆栈上,而string的定义是public sealed class String是一个类。
    在定义一个string a后,并没有为其初始化a的值为null,而int a后a默认为0。 再有string a="123" 声明了一个string类型,然后对其再次赋值a="456",会再次创建一个值为456的实例,而不是修改值为123的实例。int a=9之后int b=a 这样在内存中会生成两个值为9的int结构体实例在堆栈中。还有bool变量只接受true或者false,而不会接受0或者1不会对其隐式类型转换。bool变量的默认值为false。
    关于int对应System.Int32,bool对应System.Boolean等其实都是结构,他们都是继承于System.ValueType, 而System.VauleType又继承与System.Object. 所以他们的实例都可以进行ToString()这样的操作。String就直接继承与System.object。
    关于变量的作用域有这样一个有趣的事,请看下面两段代码
<div class="cnblogs_code"> 1     class Program1 2     { 3         private static void Main(string[] args) 4         { 5             int j = 20; 6             for (int i = 0; i < 10; i++) 7             { 8                 int j = 30; 9                 Console.WriteLine(j + 1);10             }11         }12     }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

回顶部