Day35

今天面了个试,结果过程和之前的面试完全不一样,没要求写算法,只问了些基础的东西,看来这家公司并不是真心想招人,大概只是打着招人的幌子探测人力市场动态的吧。。。但是即使是如此水的面试,自己也想扇自己一个嘴巴,早上瞄了一眼的概念没想到真遇到了,当然也每答对,因为根本就没记住,再根本的原因就是没用过,不理解。所以今天就把这两东西整理一下吧。。。

C#的ref和out

ref和out传递的都是变量的引用,修改引用的值可以达到修改变量的值的目的,所以使用这两个参数可以让函数返回多个参数。

不同:
ref要求变量在传递之前必须初始化,而out必须在方法中进行初始化,因为out在进入方法时C#会清空一切它的引用和指向。
out适用于需要返回多个值的地方,ref适用于需要被调用的方法修改调用者引用的时候
比如:

void Main()
{
    string s = "Stupid Bird";     //如果这句改为 string s; 则会报错
    Test(ref s);
    Console.WriteLine(s);
}
void Test(ref string str)
{
    str = "Silly Bird";
}
void Main()
{   
    string s = "Stupid bird";
    Test(out s);
}
void Test(out string s)
{
    s = "Silly bird";           //如果把这句去掉则会报错
    Console.WriteLine(s);
}

所以用网上总结的一句话概括这两个变量为:

ref有进有出,out只出不进。

另外,虽然两个关键字运行的时候处理方式不同,但是编译的时候处理方式相同,所以两个同名函数一个用ref,一个用out,这两个函数编译器会认为是一样的而不是重载过的,会报错。但是如果一个不带ref或out关键字,一个带ref或out关键字则可认为是重载函数。

Test(ref int n);
Test(out int n);    //写在一个类里会报错
Test(int n);
Test(ref int n);    //可通过

发现如此水的题又错了一道,暴风哭泣/(ㄒoㄒ)/~~

Unity中继承Monobehaviour的类的Start函数是不能继承的,因为它是私有的。所以即使B类继承A类,只将B挂在场景物体上,在执行的时候A中的Start不会被执行。非要执行A中的start,要在B中的Start中调用 base.Start()

/(ㄒoㄒ)//(ㄒoㄒ)//(ㄒoㄒ)//(ㄒoㄒ)//(ㄒoㄒ)/~~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值