C# 之值类型与引用类型参数[基础]

本文探讨了C#中值类型和引用类型的参数传递方式,并通过具体示例展示了如何使用ref关键字来修改参数值。文中还讨论了方法重载的问题及注意事项。

 

根据参数类型和传递方式,有以下4种不同的情况:
值类型参数的按值传递;                    (int m)
引用类型参数的按值(地址值)传递;  (string str)
值类型参数的按引用传递;                (ref int m)
引用类型参数的按引用传递;            (ref string str)

 

ExpandedBlockStart.gif值类型与引用类型参数
class Demo
    {
        
static void Main(string[] args)
        {
            
int n = 100;
            
string str = "One";

            ChangeByValue(
ref n);  //  值类型:ref 传递的是变量 n 的地址(即:值类型的地址)
            ChangeByRef(ref str);  //引用类型:ref 传递的是变量 str 的地址(即:引用的引用)

            Console.WriteLine(n);
            Console.WriteLine(str);
        }
        
private static void ChangeByValue(ref int m)
        {
            m 
= 200;  //实际上改变的是变量 n 的值
        }
        
private static void ChangeByRef(ref string s)
        {
            s 
= "Two";
        }

        
//通过,参数带ref(或out),与不带ref(或out)的方法能实现方法的重载
        private static void ChangeByRef(string s)
        {
            s 
= "Two";
        }

        
// 报错:不能定义仅在 ref 和 out 上有差别的重载方法。
        
// 原因:在MSIL中, ref 和 out 是同一类型。
     /* private static void ChangeByRef(out string s)
        {
            s = "Two";
        }
     
*/ 
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值