永发信息网

C#为什么可以返回局部变量的引用

答案:4  悬赏:60  手机版
解决时间 2021-03-07 09:02
  • 提问者网友:謫仙
  • 2021-03-06 13:35
C++决定不允许,但C#却常常这么做

就像下面这样,返回的不就是局部变量的引用吗,但C#中是可以这样的
public class Myclass
{
public Myclass AMethod ()
{
Myclass myClass1= new Myclass();
return myClass1;
}
}
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-03-06 14:28
喂喂谁跟你说C++绝不允许。
C++和C#用不同的眼光看待“类”,C#里全是引用,相当于C++里的指针。
所以你那个代码改成C++就是

class Myclass {
public: Myclass* AMethod()
{
Myclass* myClass1 = new Myclass();
return myClass1;
}
};

关键点:注意都是new

如果你一定要走邪道,
class Myclass {
public: Myclass& AMethod()
{
Myclass& myClass1 = (*new Myclass());
return myClass1;
}
};
全部回答
  • 1楼网友:归鹤鸣
  • 2021-03-06 16:55
没理解“返回局部变量的引用”是什么意思。举个例子?觉得不合理吗?
  • 2楼网友:纵马山川剑自提
  • 2021-03-06 16:20
1)局部变量只在本函数范围有效,在此函数以外是不能使用这些变量;全局变量的有效范围是从定义变量的位置开始到本源文件结束。 2)局部变量是程序运行到该函数时给该变量分配内存空间,函数结束则释放该内存空间;全局变量是程序运行时事先分配内存空间,当程序结束时释放内存。
  • 3楼网友:蓝房子
  • 2021-03-06 15:40
不知道你是指函数内部return,还是指函数参数的ref/out。 前者的话,都可以。后者的话,C++需要使用引用&,C#使用ref。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯