日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

方法参数修饰符in,out,ref

發布時間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 方法参数修饰符in,out,ref 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

in,out,ref都可能作為方法參數據修飾符,從字面意思可就可以理解這三個關鍵字的含義,那用法是什么樣子的呢,通過demo來看一下。

定義一個引用類型Order

public class Order {public?string?OrderNo?{?get;?set;?}public override string ToString(){return OrderNo;} }

in參數用法:

Console.WriteLine("in 參數 只能從外部把值傳入方法內部使用"); var i = 10; InMethod01(in i); Console.WriteLine($"外:{i}"); //InMethod01(in 10);//錯誤,in后不能是實際的數據//可以直接傳入數據 InMethod01(10);//order內的OrderNo傳入方法內部有可能被改掉,但order不可以被替換 var order = new Order { OrderNo = "O000000" }; InMethod02(in order); Console.WriteLine($"外:{order}"); //InMethod02(in new Order { OrderNo = "abcd" });//錯誤,in后不能是實際的數據//可以直接傳入數據 InMethod02(new Order { OrderNo = "O000000" });//int i1; //Order order1; //InMethod03(in order1 in i1);//錯誤,不能是沒有賦值的變量int i1 = 1; Order order1 = new Order() { OrderNo = "O000000" }; //方法的參數列表中可以有多個in InMethod03(in order1, in i1);//錯誤,不能是沒有賦值的變量InMethod03(new Order { OrderNo = "O000000" }, 20);static void InMethod01(in int i) {//i = 10;//錯誤Console.WriteLine($"內:{i}"); } static void InMethod02(in Order order) {//order = new Order();//錯誤order.OrderNo = "O000002"; //正確,這里可以參數成員賦值Console.WriteLine($"內:{order}"); } static void InMethod03(in Order order, in int i) {//i = 10;Console.WriteLine($"內:{i}");//order = new Order(); //錯誤//order.OrderNo = "O000001"; //正確,這里可以參數成員賦值Console.WriteLine($"內:{order}"); }

out參數用法:

Console.WriteLine("out?參數,是從方法內部把數據帶出來");//定義調用一起 OutMethod01(out int i1); Console.WriteLine($"外 :{i1}");//定義調用分開 int i2=20; //即使賦值,方法內部接收不到 OutMethod01(out i2); Console.WriteLine($"外 :{i2}");//定義調用一起 OutMethod02(out Order order1); Console.WriteLine($"外 :{order1}");//定義調用分開 Order order2; OutMethod02(out order2); Console.WriteLine($"外 :{order2}");//多個out同時存在 OutMethod03(out Order order3, out int i3); Console.WriteLine($"外 :{order3}"); Console.WriteLine($"外 :{i3}");Order order4; int i4=20;//這里的20是能傳入OutMethod03中的,但在方法內部,不能在給i賦值前使用 OutMethod03(out order4, out i4); Console.WriteLine($"外 :{order4}"); Console.WriteLine($"外 :{i4}");//帶有out的參數,在方法內即使有值,也能不使用,只有賦值后才能使用 static void OutMethod01(out int i) {//Console.WriteLine(i);//錯誤i = 10;Console.WriteLine(i); } static void OutMethod02(out Order order) {//Console.WriteLine(order); //錯誤order = new Order { OrderNo = "O000001" };Console.WriteLine(order); } static void OutMethod03(out Order order, out int i) {//Console.WriteLine(i);//錯誤//Console.WriteLine(order); //錯誤i = 10;order = new Order { OrderNo = "O000001" };Console.WriteLine(i);//錯誤Console.WriteLine(order); //錯誤 }

ref參數用法:

Console.WriteLine("ref 參數,即能把外部的數據傳入,也能把方法里的參數變化值傳出,這里更多的是把參數轉成一個引用,穿透方法內外共享");//RefMethod01(ref 10);//錯誤,這里只能傳入一個變量,不能是具體的數據//int i1;//錯誤,ref要求傳入必須有值 //RefMethod01(ref i1);//錯誤 int i1 = 1; RefMethod01(ref i1); Console.WriteLine($"外 :{i1}");var order1 = new Order { OrderNo = "O000000" }; RefMethod02(ref order1); Console.WriteLine($"外 :{order1}");Order order2 = new Order { OrderNo = "O000000" }; int i2 = 1; RefMethod03(ref order2, ref i2); Console.WriteLine($"外 :{order2}"); Console.WriteLine($"外 :{i2}");static void RefMethod01(ref int i) {Console.WriteLine($"前:{i}");i = 10;Console.WriteLine($"后:{i}"); } static void RefMethod02(ref Order order) {Console.WriteLine($"前:{order}");order = new Order { OrderNo = "O000001" };Console.WriteLine($"后:{order}"); } static void RefMethod03(ref Order order, ref int i) {Console.WriteLine($"前:{i}");Console.WriteLine($"前:{order}");i = 10;order = new Order { OrderNo = "O000001" };Console.WriteLine($"后:{i}");Console.WriteLine($"后:{order}"); }

總結

以上是生活随笔為你收集整理的方法参数修饰符in,out,ref的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。