1. int [] arrInt = new int[5] ; 等号左边开辟了一个小的栈的空间、等号右边在堆空间开辟了5个空间,会将堆里开辟的第一个空间给地址赋值给栈里的空间 string [,] productList = new string [2,5]; productList[0,0] ="1号"; productList[1,0] ="88元"; productList[0,1] ="2号"; productList[1,1] ="99元"; 遍历数组 如果是1维数组 for(int i=0;i<productList.Length;i++){} 如果遍历2维数组 static void Main(string[] srts) { double myMoney="30000"; BuyStuff("苹果",out double myMoney); } static double BuyStuff (string proName, out double money){ for(int i=0;i<productList.getLength(0);i++){ if(productList[0,i] == proName){ double proPrice = Convert.ToDouble(productList[1,i]); return (money-proPrice); } } } 这个地方设计到返回值有2个 一个是商品一个是剩余的钱 ref :引用传参 out : 输出传参 在使用之前必须复制 out参数的特点: 在方法中使用之前,必须赋值。 在方法中返回之前,必须赋值。 double myMoney="30000"; BuyStuff("苹果",ref double myMoney); static string BuyStuff(string proName,double money) { money = money - "花的钱"; //等号右边先执行, 先通过money找到在栈中的引用值,再拿应用的值去减掉花的值 // 再将结果返回给 ref 的myMoney; } ref 和 out 区别 相同点:凡是使用out/ref修饰的参数,传递的都是引用。 不同点: out关键在侧重输出参数,也就是我调用你的方法,是为了通过输出参数的方式获得值(return值也是为了通过方法获得值):通常在方法需要返回多个值的时候使用。 通常在方法需要返回多个值的时候使用。 所有,out参数必须在方法返回之前(结束之前)赋值。 ref侧重于修改,也就是我调用你这个方法,并传入参数的目的是为了再方法中修改传入的这个变量。 所以,ref参数必须在传入之前就赋值。 2. 方法(函数):重用 静态方法[static] 可以通过类名来调用 Console.ReadLine(); public static class Console{} Console 静态类; Console.WriteLine(这个种有19个方法)可以充分展现出方法重载 方法名相同方法的参数类型 和 个数不同; 3. return 为方法返回值、同事可以立即退出程序。break 退出当前循环、 continue 退出本次循环。 4. void 无类型无返回值;接受返回值的方法: 接受变量的类型 必须和返回值的一致。 5. 栈 和 堆 的特点 栈:栈的空间小,但是访问的速度快 堆:堆的空间大,但访问的速度慢 New 关键字 : 1.在堆中开辟一块空间; 2.创建对象 3.调用构造函数 6. params 可变参数 特点: 1.可以直接传数组进去的、 也可以直接传 和 参数数组同类型的元素进去 2.可变参数 在一个方法的参数列表中 方法的参数列表中可变参数只能有一个 这仅有的一个可变参数 必须在参数列表最后