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二十七
  • 相关阅读:
    June. 26th 2018, Week 26th. Tuesday
    June. 25th 2018, Week 26th. Monday
    June. 24th 2018, Week 26th. Sunday
    June. 23rd 2018, Week 25th. Saturday
    June. 22 2018, Week 25th. Friday
    June. 21 2018, Week 25th. Thursday
    June. 20 2018, Week 25th. Wednesday
    【2018.10.11 C与C++基础】C Preprocessor的功能及缺陷(草稿)
    June.19 2018, Week 25th Tuesday
    June 18. 2018, Week 25th. Monday
  • 原文地址:https://www.cnblogs.com/Dean27/p/6029591.html
Copyright © 2011-2022 走看看