一、核心C#(第二部分)

---恢复内容开始---

预定义数据类型

值类型和引用类型。

1.存储在内存的不同地方:值类型存储在堆栈中,而引用类型存储在托管堆上。注意区分某个类型是值类型还是引用类型,因为这种存储位置的不同会有不同的影响。例如:int 是值类型,这表示下面的语句会在内存的两个地方存储值20:

i = 20;
j = i;

但考虑下面的代码。这段代码假定已经定义了一个类Vector,Vector是一个引用类型,它有一个int类型的成员变量Value:

Vector x, y;
x = new Vector();
x.Value = 30;
y = x;
Console.WriteLine(y.value);
y.Value = 50;
Console.WriteLine(x.Value)

要理解的重要一点是在执行这段代码后,只有一个Vector对戏那个。x和y都指向包含该对象的内存位置。因为x和y是引用类型的变量,声明这两个变量只保留了一个引用---而不会实例化给定类型的对象。两情况下都不会真正的创建对象。要创建对象,就必须使用new关键字,如上所示。因为x和y引用同一对象,所以对x的修改会影响y,反之亦然。因此上面的代码会显示30和50。

C#认可的基本预定义类型并没有内置于C#语言中,而是内置于.Net Framework中。例如,在C#中声明一个int类型的数据时,声明的实际上是.Net结构System.Int32的一个实例。这听起来似乎很深奥,但其意义深远:这表示在语法上,可以把所有的基本数据类型看成支持某些方法的类。例如,要把int i 转换为string,可以编写下面的代码:

string s = i.ToString();

应强调的是,这种便利语法的背后,类型实际上任存储仍为基本类型。基本类型在概念上用.Net结构表示,所以肯定没有性能损失。

一些C#类型的名称与C++和Java类型一致,但其定义不同。

在C#中,int类型总是32位带符号的整数,而在C++中,int是带符号的证书,但其位数取决于平台(在Windows上是32位)。

在C#中,所有数据类型都以与平台无关性的方式定义,以备将来C#和.Net迁移到其他平台上。

namespace EnumStudy
{
    class Program
    {
        static void Main(string[] args)
        {
            EnumMyStudy es = new EnumMyStudy();
            es = EnumMyStudy.优秀;

            WriteStudy(es);

            EnumMyStudy es1 = new EnumMyStudy();
            es1 = EnumMyStudy.及格;
            EnumMyStudy es2 = (EnumMyStudy)Enum.Parse(typeof(EnumMyStudy), es1.ToString(), true);
            Console.WriteLine(es2.ToString() + "  " + (int)es2 + "   "+ es2);

            Console.ReadKey();
        }

        static void WriteStudy(EnumMyStudy es)
        {
            switch (es)
            {
                case EnumMyStudy.优秀:
                    {
                        Console.WriteLine("您的学习成绩为:优秀");
                    }break;
                case EnumMyStudy.良好:
                    {
                        Console.WriteLine("您的学习成绩为:良好");
                    }
                    break;
                case EnumMyStudy.及格:
                    {
                        Console.WriteLine("您的学习成绩为:及格");
                    }
                    break;
                case EnumMyStudy.不及格:
                    {
                        Console.WriteLine("您的学习成绩为:不及格");
                    }
                    break;
                case EnumMyStudy.差:
                    {
                        Console.WriteLine("您的学习成绩为:差");
                    } break;
            }
        }
    }
} 
时间: 2024-08-02 16:43:55

一、核心C#(第二部分)的相关文章

python基础学习05(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #dict{键:值} #哈希 #注:字典是无顺序的,所以你懂的 #创建与赋值 dict1={} dict2={'name':'apply','avg':24,'sex':'man'} print dict1,dict2

python基础学习07(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #file与input output #文件对象 #简单说来,就是写入和读取的方式 #file(),open()2个操作都是一样的,一般推荐open() #语法 # open(name[, mode[, bufferin

python基础学习08(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #异常 """ NameError: 尝试访问一个未申明的变量 ZeroDivisionError:  除数为零 SyntaxError: 解释器语法错误 IndexError: 请求的索引超出序列范

python基础学习12(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #python class #面向对象编程oop思想,3个特性:封装.继承.多态,在其他方面的功能,比如重载,模拟等,也可以自定义自己需要的类 #在python中,面向对象主要2个:类和类实例 #类与实例 #类与实例有关

python核心编程第二版

初学Python这是一本有关Python开发的指南涵盖近期发布的Pyttlon版本的核心功能特性,而不仅仅是语法学习更多的高阶内容,如正则表达式.网络.多线程.图形用户界面.Web/CGl和Python扩展等包括几个全新的章节,关于数据库.网络客户端.Java/Jytt30n和Microsoft Office等 展示数以百计的代码片段.交互实例和大量加强您的Python技能的实用练习"对Wesley Chun<Python核心编程>第二版的漫长等待是值得的--它的深邃.它的全面,以及

python基础学习09(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #什么是函数 #就是引用,创建,使用 #例子 def foo(): print '233' foo() #返回与函数类型 def foo1():#是一个过程 print 'hello world!' foo1() foo

python基础学习11(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #执行环境 #可调用对象 """ 许多的python 对象都是我们所说的可调用的,即是任何能通过函数操作符“()”来调用的对象.要调用可调用对象, 函数操作符得紧跟在可调用对象之后.Python 有4

《Python核心编程(第二版)》pdf

下载地址:网盘下载 内容简介  · · · · · · 本书是Python开发者的完全指南--针对 python 2.5全面升级 ·学习专业的Python风格.最佳实践和好的编程习惯: ·加强对Python对象.内存模型和Python面向对象特性的深入理解: ·构建更有效的Web.CGI.互联网.网络和其他客户端/服务器架构应用程序及软件: ·学习如何使用Python中的Tkinter和其他工具来开发自己的GUI应用程序及软件: ·通过用C等语言编写扩展来提升Python应用程序的性能,或者通过

Python核心编程第二版 第十二章课后答案

12-1.路径搜索和搜索路径.路径搜索和搜索路径之间有什么不同? 前者是指查找某个文件的操作,后者是去查找一组目录. 12-2. 导入属性.假设你的模块mymodule里有一个foo()函数. (a)把这个函数导入到你的名称空间有哪两种方法? (b)这两种方法导入后的名称空间有什么不同? import mymodule from mymodule import foo 第一种将mymodule里的属性全部导入,第二种只导入foo 12-3.导入"import module"和"

python核心编程[第二版]

归类贴: 第一周 http://www.cnblogs.com/tenjl-exv/p/8039366.html 第二周 http://www.cnblogs.com/tenjl-exv/p/8058814.html