C#引數傳遞之值引數
C#引數傳遞有四種:值引數,引用引數,輸出引數和陣列引數。這裡首先介紹一下值引數。值引數在處理時不需要任何修飾符,但引數型別有可能有兩種:一種是值型別,另一種是引用型別。
(1)當用值引數向方法傳遞引數時,程式給實參在棧中儲存的內容做一份拷貝,並且將此拷貝傳遞給該方法,被呼叫的方法不會修飾實參的值,所以使用值引數時,可以保證實參的修士是安全的。
(2)如果引數的型別是引用型別(例如,類),則拷貝中儲存的也是物件的引用,因此此時拷貝和實參指向的是堆中的同一個物件,通過這個拷貝,可以修改實參所引用的物件中的資料成員。如下面的例子。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Student
{
public string Name
{
get;
set;
}
public double Score
{
get;
set;
}
public Student(string name, double score)
{
Name = name;
Score = score;
}
}
class SimpleMath
{
public void swap(Student stu1, Student stu2)
{
double temp = stu1.Score;
stu1.Score = stu2.Score;
stu2.Score = temp;
}
}
class Program
{
static void Main(string[] args)
{
Student stu11 = new Student("zxf", 98.5);
Student stu22 = new Student("zhang", 84.5);
Console.WriteLine("{0},{1}",stu11.Score,stu22.Score);
SimpleMath smp = new SimpleMath();
smp.swap(stu11, stu22);
Console.WriteLine("{0},{1}", stu11.Score, stu22.Score);
Console.ReadLine();
}
}
}
上述例子中,引數是Student這個類,因此是引用型別,通過SimpleMath的swap函式,將stu11和stu22中的score欄位進行了交換。
相關文章
- JavaScript深入之引數按值傳遞JavaScript
- JavaScript 深入之引數按值傳遞JavaScript
- JS的方法引數傳遞(按值傳遞)JS
- c# 方法引數(傳值,傳引用,ref,out,params,可選引數,命名引數)C#
- ajax傳遞的引數值包含單引號
- c# 方法引數_值引數C#
- 引數傳遞
- SpringMVC之引數傳遞SpringMVC
- JavaScript 獲取 url 傳遞引數值JavaScript
- url傳遞的引數值編碼
- 獲取url傳遞的引數值
- 深入學習js之——引數按值傳遞#9JS
- js如何獲取url所傳遞的引數和引數值JS
- JNI傳遞引數
- Mybatis引數傳遞MyBatis
- 引數傳遞機制之JWTJWT
- JAVA基礎之-引數傳遞Java
- js中函式引數值傳遞和引用傳遞JS函式
- C# 多執行緒引數傳遞C#執行緒
- C#頁面間的引數傳遞C#
- Java引數傳遞是傳值還是傳引用?Java
- JavaScript獲取url傳遞的引數值JavaScript
- 獲取url傳遞傳遞的某個引數的值
- C#中的值引數,引用引數及輸出引數C#
- 結構體引數的傳遞以及如何修改指標引數的值結構體指標
- python函式之引數傳遞Python函式
- [linux shell]引數傳遞之空格Linux
- Python的函式引數傳遞:傳值?引用?Python函式
- React事件傳遞引數React事件
- 路由元件傳遞引數路由元件
- ABAP 方法呼叫的引數傳遞裡,透過引用傳遞的方式,能修改原始引數值嗎?
- c# {0}引數值C#
- javascript如何獲取url傳遞的引數值JavaScript
- Go語言引數傳遞是傳值?還是傳引用 ?Go
- Go語言引數傳遞是傳值還是傳引用Go
- 引數傳值機制
- C#程式設計:ref【引數按引用傳遞】C#程式設計
- Python3之函式的引數傳遞與引數定義Python函式