static void()
{
for(int i = 0; i < 10 ;i++)
{
for(int j = 0 ;j<10;j++)
{
break;//退出當前循環
continue; //退出本次循環
Console.WriteLine(“不執行了”);
}
}
}
注1.break 退出當前循環的意思是不管 J 等於3或者4 裡面的for循環都不執行了。
注2.continue 推出本次循環的意思是 continue下面的console.writeline本次不執行了 接著執行 J 等於 1的下一次循環。
1.閱讀下面的程序,說一下輸出結果是多少?
public class _20120213_02簡單計算器
{
//方法重載的關鍵條件,是方法名一致,參數列表不同;
//使用方法重載,來完成簡單的計算器
static void Main4(string[] arr)
{
//要求,接收用戶的兩個數,當然,可以是整型的,也可以是小數的
//輸出:兩數的結果
//提示用戶輸入第一個數
Console.WriteLine("請輸入第一個數:");
//接受第一個數
string strNumA = Console.ReadLine();
//提示用戶輸入第二個數
Console.WriteLine("請輸入第二個數:");
//接受第二個數
string strNumB = Console.ReadLine();
//計算結果
if (strNumA.IndexOf('.') > -1 || strNumB.IndexOf('.') > -1)
{
double fNumA = Convert.ToDouble(strNumA);
double fNumB = Convert.ToDouble(strNumB);
double iResult = Add(fNumA, fNumB);
Console.WriteLine("結果:" + iResult);
}
else
{
int iNumA = Convert.ToInt32(strNumA);
int iNumB = Convert.ToInt32(strNumB);
int iResult= Add(iNumA, iNumB);
Console.WriteLine("結果:"+iResult);
}
Console.ReadKey();
}
//以下的三個方法,名字一樣,但是方法的參數列表 個數 或 類型 不同,所以構成了方法重載
static int Add(int numA, int numB)
{
return numA + numB;
}
static double Add(double numA, double numB)
{
return numA + numB;
}
static double Add(double numA)
{
return numA;
}
}
注 :out與ref的相同點和不同點。
相同點 : 凡事使用out/ref修飾的參數,傳遞的都是引用。
不同點: 1.out關鍵字側重於輸出參數,也就是我調用你這個方法,是為了通過輸出的方式獲得值。(return返回值也是為了通過方法獲得值):通常在方法需要多個值的時候使用。所以out參數必須在方法返回多個值的時候使用
2..ref側重於修改:也就是我調用你這個方法,病傳入參數的目的是為了在方法中修改傳入的這個變量。所以ref參數必須在傳入之前就賦值。
代碼示例:
public class _20120213_05ATM
{
static void Main(string[] str)
{
double myMoney = 30000;
Operating(ref myMoney);
}
#region 01.ATM啟動
/// <summary>
/// 01.ATM啟動
/// </summary>
/// <param name="count">賬戶余額</param>
static void Operating(ref double count)
{
do
{
Console.WriteLine("請問您是要存還是取呢?親~~(1-存,2-取)~");
string optType = Console.ReadLine();
if (optType != "1" && optType != "2")
{
Console.WriteLine("您輸入的操作類型有誤,請重新輸入~~");
continue;
}
do
{
Console.WriteLine("請輸入要操作的金額(以元為單位):");
string strMoney = Console.ReadLine();
double dMoney = 0;
if (double.TryParse(strMoney, out dMoney))//如果轉換成功返回true;並且dMoney裡已被賦值。
{
//傳入參數:操作類型,操作金額,賬戶余額
if (Branch(optType, dMoney, ref count))
{
Console.WriteLine("操作完畢,成功啦~~");
Console.WriteLine("顯示余額:" + count);
break;//如果操作過程麼有錯誤,則跳出 當前循環(此循環用來在數據類型有誤時提示用戶重新操作)
}
}
else
{
Console.WriteLine("您輸入的數據類型有誤~~");
}
} while (true);
Console.WriteLine("是否要繼續操作?(Y/N)");
string strRes = Console.ReadLine();
if (strRes.ToUpper() == "N")
{
break;//跳出 整個操作循環,任務即將結束
}
} while (true);
Console.WriteLine("任務結束~~按任意鍵退出");
Console.ReadLine();
}
#endregion
#region 02.根據類型判斷操作
/// <summary>
/// 02.根據類型判斷操作
/// </summary>
/// <param name="optType"></param>
static bool Branch(string optType,double money,ref double count)
{
switch (optType)
{
case "1":
SaveMoney(money, ref count);
return true;
case "2":
{
return GetMoney(money, ref count);
}
default:
return false;
}
}
#endregion
#region 03.存錢取錢
static void SaveMoney(double money, ref double count)
{
count += money;
Console.WriteLine("存錢成功~~");
}
static bool GetMoney(double money, ref double count)
{
if (money < count)
{
count -= money;
Console.WriteLine("取錢成功~~");
}
else
{
Console.WriteLine("Sorry,您的余額好像不足了哦~~~");
}
return money < count;
}
#endregion
}
示例代碼:
public class _20120213_06可變數組參數
{
static void Main8(string[] str)
{
//一、可變參數params:使用的時候(調用方法的時候):
//1.還是可以直接傳數組進去的
string[] dogsNames = { "小花", "小妞", "阿黃", "大黃", "小強" };
//BuyDogs(dogsNames);
//2.也可以直接傳 和 參數數組 同類型的 元素進去
//BuyDogs("小花", "小妞", "阿黃", "大黃", "小強");
//二、容易犯的錯
//規定 可變參數 在一個方法的參數列表中:
//1.方法的參數列表中 可變參數 只能有一個;
//2.這僅有的一個 可變參數 必須在參數列表的最後;
BuyDogs("劉德華", "小花", "小妞", "阿黃", "大黃", "小強");
Console.ReadLine();
}
static void BuyDogs(params string[] dogsNameArr)
{
for (int i = 0; i < dogsNameArr.Length; i++)
{
Console.WriteLine("第" + (i + 1) + "只小狗的名字為:" + dogsNameArr[i]);
}
}
static void BuyDogs(string masterName,params string[] dogsNameArr)
{
for (int i = 0; i < dogsNameArr.Length; i++)
{
Console.WriteLine(masterName + " 的第" + (i + 1) + "只小狗的名字為:" + dogsNameArr[i]);
}
}
static void BuyDogs(string masterName, string masterName2, params string[] dogsNameArr)
{
for (int i = 0; i < dogsNameArr.Length; i++)
{
Console.WriteLine(masterName + ",masterName2=" + masterName2 + " 的第" + (i + 1) + "只小狗的名字為:" + dogsNameArr[i]);
}
}
}
注: 當多個方法的參數列表中和後面可變參數的類型一樣的時候,用戶調用該方法,會優先調用參數多的方法。
--此文算是以後研究更深層次的引子吧,比如out和ref深層次的研究。