【C#】Out与ref是干什么的?
關于return:
1.最后沒有寫 return 語句的話,表示程序正常退出
2.不需要返回值時,存在return的作用
例子
void main()
{return; //return退出該程序的作用;如果在子函數中則代表返回主函數中
}
void main()
{return 0;//返回0表示正確的調用了該函數
}
3.需要返回值時存在return的作用
int main( int argc)
{//int argc;函數調用的時候計算結果通常是通過返回值帶出
}
終止函數執行的一種方式。當return語句提供了一個值時,這個值就成為函數的返回值.
return不能同時返回多個值
(除非是結構體、數組),想讓它能夠返回,怎么辦?
用out和ref
1.方法中沒有寫返回值的的變量要想傳到方法外:用out或ref
2. out 和ref后面的內容不能稱為參數;
因為參數的作用:傳進來值并參與運算形成最后唯一的return結果
所以這里out |ref 【變量】 只是為了返回多個變量而產生的機制,最終返回的結果還是一個值。
out 和ref的區別
static void Main(string[] args)//主方法
{int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };int max = 0;int min;int sum = ArraySum(nums, out max, out min);
}public static int ArraySum(int []numbers,out int max,out int min)//調用方法的過程中要給這些參數
{max = int.MinValue;min = int.MaxValue;int sum = 0;for (int i = 0; i < numbers .Length ; i++){if(numbers[i]>max){max = numbers[i];}if (numbers[i] < min){min = numbers[i];}sum += numbers[i];}return sum;//但為什么返回值只有一個,不是要多個返回值嗎?//雖然只有一個返回值,但有兩個out,所以相當于有三個返回值
}
out 不管你在主方法中有沒有給值,在方法中都會重新賦值的,所以即便在方法中賦了值,也會被改變的,因為最終的值是由定義了out的參數的方法決定的,但out需要在主方法中定義變量去接收,所以傳到了主方法中由于重新的賦值,變量值和結果值會受影響。
所以不管你在主方法中怎樣賦值,都不會對結果又影響,所以在主方法看起來這個變量的值好像只有傳出的方向
ref必須在主方法中給值,到方法中可以從新賦值,也可以使用主方法中的值(沒有在主方法中得到值的情況),并且隱含了主方法的變量用來接收值
所以,ref的傳進傳出是指,當在方法中沒有重新賦值,可以傳進來,并把原來賦值的結果傳出去,就好像,有進有出。
但當ref方法中重新賦值的時候,就類似于out,只有傳出
所以
標準的ref用法是在主方法中賦值,在方法中不賦值,
標準的out用法是在主方法中不賦值,在方法中賦值,
當:如果都在主方法中賦值
out的情況就是有進無出,本來的結果沒有出來
ref的情況就是有進有出,本來應該得到的結果也被送出來
總結
以上是生活随笔為你收集整理的【C#】Out与ref是干什么的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C#】数组的最大最小值
- 下一篇: 【算法基础】时间复杂度:大O阶方法