C#学习5
来源:互联网 发布:淘宝万能评价语 编辑:程序博客网 时间:2024/06/01 08:45
常量
const 类型名 变量名 = 数值; 在定义时赋值,其他地方不能赋值。
枚举
定义一种枚举类型,并且在定义这种类型是要指定这个类型的所有值。
语法: enum 自己起的类型名 { 写我们这种类型都有哪些值 值1,值2,... ,值n}
枚举的定义一般和类定义在用一个级别,这样这个命名空间下所有的类都能使用。方法中、类中也可以。
作用 : 1 限制用户不能随意赋值,只能在定义的枚举值中选择;2 不用死记值,用 . 选择值;
定义枚举是,值不能是int类型
枚举类型都可以强制转换为int 类型;枚举值在定义的时候已经默认有值,编号从0开始;也可以把第一个定义为其他值,后面值递增1;
如何把一个字符串转化为一个枚举类型
(自己定义的枚举类型) (Enum.Parse(typeof(自己定义的枚举类型),"待转换的字符串");
命名参数 : 只要显示指定参数的名字就可以图任意顺序在方法调用中列出实参
调用的时候可以既有位置参数也有命名参数,但在这种情况下位置参数要先列出。
public int calc(int a, int b, int c){ ....} int r0 = calc(4,3,2); int r1 = calc(c: 2,b:3,a:4); int r3 = calc (4,c:2,b:3);
可选参数 : 在调用方法的时候可以包含这个参数也可以省略他
为了表明某个参数是可选的,需要在方法的声明的时候为参数提供默认值。只有值参数类型可以作为可选参数类型。所有必填参数必须在可选参数声明之前声明。如果有paras参数,必须在所有可选参数之后声明。
public int calc ( int x, decimal y ,...int a=3, double b = 15, ... params int[] intvals )// 顺序 : 必填参数,可选参数,params参数必须从可选参数列表的最后开始省略,直到列表开头,也就是只可以省略最后n个参数,不可以随便选择省略任意的参数。
栈帧 : 调用方法时,内存从栈顶开始分配,保存和方法关联的一些数据项,这块内存叫做栈帧(stack frame)
包含内容:返回地址,也就是在方法退出的时候继续执行的位置。
这些参数分配的内存,也就是方法的值参数,或者还可能是参数数组9如果有)
各种和方法调用相关的其他管理数据项。
方法调用时整个栈帧会压入栈。方法退出时,整个栈帧都会从栈上弹出。弹出栈帧也叫栈展开(unwind)
分部类 partial
每个分部类的声明都含有一些类成员的声明; 类的分部类声明可以在同一文件中也可以在不同文件中;组成类的所有分部类 都必须在一起编译;
分部方法 : 声明在分部类中不同部分的方法。
1) 返回类型必须是void; 2)不能包含访问修饰符,即必须是私有的。3)参数列表不能有out参数;4)必须有关键字partial 放在void之前。
partial class Class2 { //因为partial 是私有的,不能从类外调用,所以方法 public add 是调用printsum 的方法 partial void PrintSum(int x, int y); //定义分布方法 public void add(int x, int y) { PrintSum(x, y); } }
partial class Class2 { partial void PrintSum(int x, int y) { Console.WriteLine(" the sum is {0}", x + y); // 实现分部方法 Console.ReadKey(); } }
class Program { static void Main(string[] args) { var mc = new Class2(); mc.add(5, 6); } }最后输出 the sum is 11;
数组
class Class3 { public int var = 0; }
// int[] arr = new int[] { 1, 2, 3 }; // foreach (int item in arr) // item++; // 错误,不能改变迭代变量值 Class3 [] classarray = new Class3[4]; for (int i = 0; i < 4; i++) { classarray[i] = new Class3(); //别忘了这里还要new 一次 classarray[i].var = i; } foreach (Class3 item in classarray) item.var += 10; //正确不能改变迭代变量的引用,但可以通过迭代变量改变数据 foreach (Class3 item in classarray) Console.WriteLine("{0}", item.var); Console.ReadKey();交错数组与巨型数组;
在CIL中一维数组有特定的指令用于性能优化。矩形数组没有这些指令,并且不能再相同级别进行优化。因此,有时使用一维数组(可以被优化)的交错数组比矩形数组(不能被优化)更有效率。另一方面,矩形数组的编程复杂度要小得多,因为他会被作为一个单元而不是数组的数组。
foreach 交错数组示例
int total = 0; int [][] arr4 = new int [2][]; arr4[0] = new int[] { 1, 2 }; arr4[1] = new int []{3,4}; foreach (int[] i in arr4) { Console.WriteLine("Starting the new array"); foreach (int j in i) { total += j; Console.WriteLine("item is {0}, total is {1}", j, total); } } Console.ReadKey();
- c#学习笔记5
- C#学习日志(5)
- C#学习5
- C#学习笔记5:
- C#学习笔记5
- C#学习5
- C#学习5
- C#学习笔记(5)
- C#学习笔记5
- C#学习5
- C#学习5
- C# 学习笔记 5
- 黑马程序员c#学习5
- c#学习5(属性)
- C#学习笔记(5)
- C#学习----C#变量
- C#学习---C#简介
- 【C#学习】C#基础
- sicily Level Traversal of Bianry Trees
- 来而无往非礼也
- mysql安装与配置
- Ubuntu 上安装MySQLdb for Python
- 色彩深度(colordepth)
- C#学习5
- 黑马程序员--集合类总结1
- js之匿名函数
- Decode Ways
- asterisk语音信箱voicemail.conf
- 全解析jQuery插件开发!很好很强大!
- C++ 多线程编程 & OpenMP
- 第十四章 REST解惑——REST简介
- Direct-attached storage (DAS)