zoukankan      html  css  js  c++  java
  • 一、核心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;
                }
            }
        }
    } 

     

    Dean二十七
  • 相关阅读:
    【BZOJ】1045: [HAOI2008]糖果传递(中位数)
    【BZOJ】1011: [HNOI2008]遥远的行星(近似)
    【BZOJ】1034: [ZJOI2008]泡泡堂BNB(贪心)
    【BZOJ】1029: [JSOI2007]建筑抢修(贪心)
    【BZOJ】1022: [SHOI2008]小约翰的游戏John(博弈论)
    【BZOJ】1010: [HNOI2008]玩具装箱toy(dp+斜率优化)
    noip2014滚粗记
    【NOIP模拟题】Permutation(dp+高精度)
    MySQL 关于自定义函数的操作
    MySQL 关于存储过程的操作
  • 原文地址:https://www.cnblogs.com/Dean27/p/6029591.html
Copyright © 2011-2022 走看看