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;
}           

  
refout  区别

相同点:凡是使用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.可变参数 在一个方法的参数列表中 方法的参数列表中可变参数只能有一个
                   这仅有的一个可变参数 必须在参数列表最后                          

 

posted on 2015-08-03 15:12  ~向阳花~  阅读(208)  评论(0编辑  收藏  举报