C# 数据类型 数组,引用类型 值类型

  1 /*C#语法基础
  2  * 1.C#程序是从Main方法开始执行。要求Main方法的返回值类型为void或int ,而且要么不带参数,要么接受一个字符串数组作为参数。当返回值是int的是状态吗,标志程序是否执行成功,返回非
  3  * 0值通常意味着错误;
  4  * 2.类型:是具有相似特征和行为的个体的分类;
  5  * 3.一次赋值返回一个值,所以C#允许在同一条语句中连续进行多个赋值操作;
  6  * 4.基元类型:8中整数类型,2种二进制浮点类型,1种金融计算的额十进制浮点类型,1种布尔类型,1种字符类型,对于这13中基元类型都是struct类型;
  7  * 那也就是说这些都是值类型,也是是说都是派生自System.ValueType;
  8  * 5.对于8种整形来说存到局部变量(locals)里面都是int(8~64),uint(8~64)类型,在32位以前都是一int4(32位)加载,long和ulong转换成i8(64位)
  9  * 6.对于浮点类型来说:float,double分别是以r4和r8加载的,存储到局部变量中分别是float32和float62;
 10  * 7.对于deciaml 来说加载的时候是以i4加载的,在调用System.Decimal的构造进行实例化,存储到局部变量中是valueType [mscrolib]System.Decimal类型
 11  * 8.格式说明符:“{0:x/X}”表示以16进制,"{0:R/r}"表示字符串转换为数值
 12  * 9.bool类型的实际大小是一个字节
 13  * 10.char 类型是2个字节
 14  * 11.null只能赋给引用类型,可空值类型,指针
 15  * 12.?可空修饰符;可以将null赋给值类型;在数据库编程中尤其有用;
 16  * 13.大小不一致的multidimensional Array会造成编译错误;
 17  * 14.交错数组:就是由数组构成的数组。交错数组不用逗号标识新的维,交错数组定义由数组构成的数组。
 18  * 15.[]数组访问符
 19  * 16.为了避免overflow最好用数组.Length-1来避免月结错误;不要使用硬编码
 20  * User: YuanWei
 21  * Date: 2015/1/20
 22  * Time: 9:36
 23  *
 24  */
 25 using System;
 26
 27 namespace LearningBasis
 28 {
 29     class Program
 30     {
 31         public static void Main(string[] args)
 32         {
 33             // TODO: Implement Functionality Here
 34 //            int rt=System.Console.Read();//返回的是对应的ascii的十进制整数,
 35             /*8种整形:sbyte,byte,short,ushort,int,uint,long,ulong*/
 36 //            sbyte sbNum=1;//8bits BCL:System.SByte
 37 //            byte bNum=2;//BCL:System.Byte
 38 //            short shNum=3;//16bits BCL:System.Int16
 39 //            ushort ushNum=4;//BCL:System.UInt16
 40 //            int iNum=5;//32bits BCL:System.Int32
 41 //            uint uiNum=6U;//有后缀 BCL:System.UInt32
 42 //            long lNum=7L;//有后缀//64bits BCL:System.Int64
 43 //            ulong ulNum=8UL;//有后缀BCL:System.UInt64
 44 //            /*3种浮点类型:float,double,decimal(特殊的浮点类型)*/
 45 //            float fNum=23.6f;//BCL:System.Single
 46 //            double douNum=24.8;//BCL:System.Double
 47 //            decimal decNum=45.9m;//BCL:System.Decimal
 48 //            /*bool,char*/
 49 //            bool isReal=false;//BCL:System.Boolean
 50 //            char word=‘a‘;//BCL:System.Char
 51 //            /*string*/
 52 //            string strExample1="nihao";
 53 //            string strExample2="nihao";
 54 //            string strNull=null;
 55 //            if(strNull==null)
 56 //            {
 57 //                Console.WriteLine("strNull is Null");
 58 //            }
 59 //            Console.WriteLine("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12}",sbNum,bNum,shNum,ushNum,iNum,uiNum,lNum,ulNum,fNum,douNum,decNum,isReal,word);
 60 //            Console.WriteLine(strExample1);
 61 //            Console.WriteLine(strExample2);
 62 //
 63 //            //Display "Ox2A"
 64 //            Console.WriteLine("0x{0:X}",42);
 65             //Fightable fight=(new Person("zhang")) as Fightable;//将Person类型转换为父接口Fightable
 66             //fight.Fight();
 67 //            Person p=new Person();
 68 //            p.person=new Person();
 69             //Person p=new Person("xiaonizi"){person=new Person("haoren")};
 70             //p.person.Fight();
 71 //            unchecked//强制不做溢出检查,checked做溢出检查
 72 //            {
 73 //                int maxNum=int.MaxValue;//2147483647
 74 //                maxNum+=1;
 75 //                Console.WriteLine(maxNum);
 76 //            }
 77             /*先声明后赋值*/
 78 //            int [] arrayNum1;
 79 //             arrayNum1=new int[3];//onw dismentional
 80 //            arrayNum1={11,22,33};//错误
 81 //             int[,] arrayNum2;
 82 //            arrayNum2=new int[2,3];//two dismentional
 83 //            int [,,] arrayNum3;
 84 //             arrayNum3=new int[2,3,4]; //three dismentional
 85 //            int [,] cells=int[3,3];
 86 //            cells={{1,2,3},{1,2,0},{1,2,1}};//错误
 87 //            arrayNum2={{1,2,3},{1,2,3}};//错误
 88             /*声明时赋值*/
 89 //            int [] arrayNum11={1,2,3};
 90 //            int [,] arrayNum22={{1,2},{1,2},{2,3}};
 91             int [,,] arrayNum33={{{11,23},{22,45}},{{33,67},{44,58}}};
 92 //            int[] arrayNum44=new int[]{0,1,2};
 93 //            int[] arrayNum55=new int[3]{1,2,3};//其实不同写多少个,但是一但写了之后,在后面的赋值就必须有固定个数,不能多也不能少
 94 //            foreach(int num in arrayNum33)
 95 //            {
 96 //                Console.WriteLine(num);
 97 //            }
 98 //            string[] strArray=new string[3];
 99 //            Console.WriteLine(strArray[0]);
100 //            int[] test=new int[3];
101 //            Console.WriteLine(test[1]);
102             //Console.WriteLine(arrayNum33[1,1,1]);//访问数组里面的元素
103             //Console.WriteLine("{0},{1},{2}",arrayNum1.Length,arrayNum2.Length,arrayNum3.Length);
104             /*交错数组:解析:int[]是数据类型,所以他之后的[]声明了一个int[]类型的数组,注意,交错数组要求为内部的每个数组都创建数组实例*/
105             int[][] cells={
106                 new int[]{1,0,2,0},
107                 new int[]{1,2,0},
108                 new int[]{1,2},
109                 new int[]{1}
110             };
111             cells[0][1]=3;//访问交错数组中的元素
112             Array.Reverse(cells);
113 //            Array.Clear(cells,0,cells.Length-2);
114 //            foreach(int num in cells)//会报错:无法将类型“int[]”转换为“int”也就是说明上面的一个数组的类型是int[],
115 //            {
116 //                Console.WriteLine(num);
117 //            }
118 //            foreach(int[] num in cells)//num遍历到的是每一个int数组,换句话说,就是cells里面的元素是数组
119 //            {
120 //                foreach(int subNum in num)//subNum表示的是每一个数组里面的元素
121 //                {
122 //                    Console.Write(" "+subNum+" ");
123 //                }
124 //                Console.WriteLine();
125 //            }
126             Console.ReadKey(true);
127         }
128     }
129     interface Fightable
130     {
131         void Fight();
132     }
133     class Person:Fightable
134     {
135         public Person(string name )
136         {
137             this.Name=name;
138         }
139         public Person person{get;set;}
140         public string Name{get;set;}
141         public void Fight()
142         {
143             System.Console.WriteLine("I can fight");
144         }
145     }
146 }
时间: 2024-08-03 08:06:56

C# 数据类型 数组,引用类型 值类型的相关文章

【C#学习路途之一】数据类型中的值类型

刚刚学习了C#的数据类型中的值类型,在C#中,数据类型分为三中,一种是值类型,另一种是引用类型,最后一种不常用,是指针类型,这个在C语言中经常使用,到现在我都没搞明白! 整数类型: 数据类型 含义 取值范围 sbyte 有符号8位整数 -128到127 byte 无符号8位整数 0到255 short 有符号16位整数 -32768到32767 ushort 无符号16位整数 0到65535 int常用 有符号32位整数 2三十一次方 到 2三十一次方-1 uint 无符号32位整数 0到429

JavaScript高级 面向对象(12)--引用类型值类型作为参数传递的特性

说明(2017-4-2 18:27:11): 1. 作为函数的参数,就是将函数的数据拷贝一份,传递给函数的定义中的参数. 函数foo()在调用的时候,做了两件事: (1)函数在调用的时候,首先需要将参数中的数据拷贝一份,即数字123拷贝一份. (2)跳转到函数的定义中(函数体),在此之前完成了函数的赋值,即num=123. (3)正式的进入函数内,准备执行函数的每一句话. 1 function foo(num){} 2 var a = 123; 3 foo(a); 2. 值类型作为函数参数传递的

golang 函数证明数组为 值类型 数据

package main import "fmt" func modify(arr [5]int) {     arr[0] = 10 // 试图修改数组的第一元素     fmt.Println("In modify() arr values:", arr) } func main() {     arrmain := [5]int{1, 2, 3, 4, 5} //定义并初始化一个数组     modify(arrmain)                  /

javascript基本数据类型与值类型引用类型说明

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了javascript中的基本数据类型,以及值类型和引用类型的区别与使用 一.基本数据类型 在javascript中申明变量使用的关键字都是var,这点与其他的编程语言不尽相同,但是javascript亦含有五种基本的数据类型(也可以说是简单数据类型),它们分别是:Undefined,Null,Boolean,Number和String.还含有一种复杂数据类型-Object.

【转】C#详解值类型和引用类型区别

通用类型系统 值类型 引用类型 值类型和引用类型在内存中的部署 1 数组 2 类型嵌套 辨明值类型和引用类型的使用场合 5 值类型和引用类型的区别小结 首先,什么是值类型,什么是引用类型? 在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中. 值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型.值类型变量声明后,不管是否已经赋值,编译器为其分配内

探索C#中的值类型和引用类型

记得大三上学期上C#课程的时候,老师第一堂课就重点给我们讲了一下C#中的数据类型.我们都知道,C#是一门强类型的高级编程语言,了解它的数据类型是非常有必要的.老师当时给我们列举了很多数据类型,然后问我们哪些是值类型,那些是引用类型.说实话,当时对于这个问题还真是回答不上来,或许可以说是自己没有多少底气回答.虽然大一学C++的时候接触过值类型和引用类型,但是因为没有深究,或者根本没有真正了解他们的区别,以至于在自己写代码时无形当中用到了却还是不了解它们之间的具体区别. 现在大四了,也到了快紧张面试

.NET六大剑客:栈、堆、值类型、引用类型、装箱和拆箱

一.“堆”,“栈”专区 这两个字我相信大家太熟悉了,甚至于米饭是什么?不知道...“堆”,“栈”是什么?哦,这个知道... 之前我也写过一篇堆栈的文章,不过写的不深刻,剖析的也不全面,所以今天也参考了一些大牛的资料. 一.预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1.栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等.其    操作方式类似于数据结构中的栈.栈是一个内存数组,是一个LIFO(last-in  f

补充!引用类型和值类型

1. 变量之间相互赋值的时候.将源变量中的值拷贝1份,将这个副本赋值给目标变量.  2. 赋值表达式要求 赋值符号 右边的数据的类型 和左边的数据的类型一致 就可以成功赋值.  3. 内存的作用:存储数据: 内存中主要分为两个空间: 栈空间: 堆空间: 栈空间与堆空间他们是用来存储数据的. 不同的数据存储在不同的空间中,这么做的好处在于方便管理.  4. 那么栈中存储哪些数据? 堆中存储哪些数据呢? int 类型的变量 开辟在栈空间中,其值直接存储在该变量中的.  int[] arr = new

java和c#值类型和引用类型

java数据类型分为基本数据类型和引用类型 基本数据类型:int  float  double  bool  char byte 引用数据类型:string  array  class interface  list 为什么区分是基本数据类型还是引用数据类型? 基本数据类型和引用数据类型在内存的存储方式是不同的,这会导致代码的运行速度不同.基本数据类型数据值直接存储在内存栈上:引用数据类型数据值放在内存堆上,在栈中存放数据值的地址(引用),以访问数据值. 那么栈和堆究竟哪个更好?栈的存取速度优于