ref和out用法很簡單,我記下來也提醒自己要用更好的方式去寫代碼,不要讓代碼過於臃腫,讓人看得頭痛。直接寫
ref:ref關鍵字就是讓參數進行傳遞,但是需要初始化,而out不需要初始化參數
ref用法:
private static void Main(string[] args) { User user = new User() { UserName = "張三", Age = 13, DisPlayValue = "" }; RefTest(ref user); Console.WriteLine("用戶名:{0};年齡:{1};分類:{2}",user.UserName,user.Age,user.DisPlayValue); Console.ReadKey(); } public static void RefTest(ref User user) { if (user.Age<18) { user.DisPlayValue = "未成年人"; } else if (user.Age<40) { user.DisPlayValue = "中年人"; } else { user.DisPlayValue = "老年人"; } } public class User { /// <summary> /// 用戶名 /// </summary> public string UserName { get; set; } /// <summary> /// 年齡 /// </summary> public int Age { get; set; } /// <summary> /// 顯示信息 /// </summary> public string DisPlayValue { get; set; } }
顯示結果:
總結:ref就是自己初始化一個參數,然后這個參數根據業務需要進行改變。
out的方法:這個比較常見,比喻用戶添加數據返回值是一個bool,但是有時候插入數據成功時候需要返回一些信息,比喻返回用戶插入的UID,插入失敗后返回信息等
private static void Main(string[] args) { string ErrInfo = string.Empty; bool result = IsAdmin("admi", out ErrInfo); Console.WriteLine(ErrInfo); Console.ReadKey(); } /// <summary> /// 是否驗證成功 /// </summary> /// <param name="UserName">用戶名</param> /// <param name="ErrInfo">錯誤信息</param> /// <returns></returns> public static bool IsAdmin(string UserName, out string ErrInfo) { bool result = false; if (UserName=="admin") { result = true; ErrInfo = "成功"; } else { ErrInfo = "登錄錯誤,不是admin"; } return result; }
運行結果:
總結:out就是定義一個參數,然后接收操作后返回的信息。
TryParse():
有時候我們需要把string類型轉換成int類型,經常用int.Parse(),但是我覺得不如用int.TryParse(),因為int.Parse()會拋出異常如果有錯誤,如果避免就需要用判斷string參數是不是有效,而int.TryParse()卻不需要,他會返回true還是false,當false的時候我們還可以設定默認值。個人覺得用int.TryParse()更好下面代碼寫用法
看下寫法:
//此時會返回false string Str = "122a"; int Number = int.TryParse(Str,out Number) ? Number : -1; //返回true的結果 string Strr = "12345"; int Numberr = int.TryParse(Strr, out Numberr) ? Numberr : -1; Console.WriteLine("第一個:{0}", Number); Console.WriteLine("第二個:{0}", Numberr);
運行結果: