第3章C程序设计基础探析.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 C#程序设计基础 ;3.1 标识符 ;3.2 C#中数据类型;3.2.1 值类型 值类型的变量内含变量值本身,C#的值类型可以分为简单类型、结构类型和枚举类型。下面仅介绍简单类型。 ;2. 实数类型;3 字符类型;4. 布尔类型 布尔类型数据用于表示逻辑真和逻辑假,布尔类型的类型标识符是bool。 ;3.2.2 引用类型   引用类型也称为参考类型。和值类型相比,引用类型的变量不直接存储所包含的值,而是指向它所要存储的值。类似C中的指针。 ;2. string类 C#还定义了一个string类,表示一个Unicode字符序列,专门用于对字符串的操作。同样,这个类也是在.NET Framework的命名空间System中定义的,是类System.String的别名。   字符串在实际中应用非常广泛,利用string类中封装的各种内部操作,可以很容易完成对字符串处理。例如: string str1=123+abc; //+运算符用于连接字符串 char c=Hello World![2]; //[]运算符可以访问string中的单个字符,c=e string str2=China; string str3=@China; // 字符串的另一种表示形式,用@引起来。 bool b=(str2==str3); //==运算符用于两个字符串比较,b=true;3.3 C#中的变量和常量 3.3.1 变量 1. 变量定义 在C#程序里使用某个变量之前,必须要告诉编译器它是一个什么样的变量,因此要对变量进行定义。定义变量的方法如下: [访问修饰符] 数据类型 变量名 [= 初始值]; 例如: string name=王华; int age=20; 也可以同时声明一个或多个给定类型的变量,例如: int a=1,b=2,c=3;; 定义一个变量,系统就会在内存中开辟相应大小的空间来存放数据。可以从下面4个层面来理解变量。;3.3.2 值类型变量和引用类型变量的区别;1. 理解值类型的变量   C#中的值类型变量和C/C++语言中的普通变量(非指针变量)相似,这类变量直接包含它们的值。   C#中在内存的栈空间中为值类型变量分配空间,而且没有单独的堆分配或垃圾回收开销。因此值类型变量会随着方法调用后栈空间的消亡而自动清除(C#中的值类型变量像C/C++语言中函数内的局部变量,函数执行完后由系统释放其存储空间)。;例如: int x; int y=2; x=y;;2. 理解引用类型的变量   在C/C++语言中可以定义指针变量,例如:   char *p;   其中,p是一个指针变量,其中存放某个字符变量的地址,注意变量p和它所指向的字符变量是两个不同的东西。   在C#中没有指针,而改为引用,引用表示某个对象的地址而不是变量或对象本身。C#中引用类型变量和其所指的对象的关系,如同前面C/C++语言中的变量p和它所指向的字符变量的关系。;  在C#中,无论值类型变量还是引用类型变量,都是在栈空间中分配对应的存储空间,所不同的是,引用类型变量所指向的对象是在托管堆上分配内存空间的,为什么这样呢?先看一个简单的C/C++语言函数:   void fun()   { char *p; //定义指针变量p int i; //定义整型变量i p=(char *)malloc(10*sizeof(char)); //为p分配10个字符的空间 for (i=0;i10;i++) //为10个字符单元分别赋值a~j   *(p+i)=a+i; printf(%s\n,p); //输出:abcdefghij   }   该函数被调用后,其中局部变量p和i的空间被回收,但p所指向的10字符空间并没有被回收,即便程序执行结束,该空间仍然没有回收。这样可能出现内存泄漏问题。解决的方法是在上述函数的末尾加上free(p)语句回收p所指向的内存空间。;  .NET Framework改进了这一点:   将C#应用程序的执行置于CLR的监控之下,而且所有引用类型变量所指向的对象(其生命周期是全局性的)都在托管堆上分配空间,程序执行完毕,由CLR将堆空间全部回收,这样就不会出现像前面C/C++程序出现的内存泄漏问题了。;  所以在C#中,当定义一个引用类型变量时,系统在栈空间中为该引用变量分配存储空间,要想创建对象并把对象的存储地址赋给该变量,就需要使用new操作符。例如:   MyClass var; //MyClass是已定义的类或类型   var=new MyClass(); //创建var引用的实例

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档