Questions tagged «ref»

26
'ref'和'out'关键字有什么区别?
我正在创建一个需要传递对象的函数,以便可以通过该函数对其进行修改。之间有什么区别? public void myFunction(ref MyClass someClass) 和 public void myFunction(out MyClass someClass) 我应该使用哪个?为什么?
891 c#  reference  keyword  out  ref 

11
在Moq中分配输出/参考参数
是否可以使用Moq(3.0+)分配out/ ref参数? 我看过使用Callback(),但Action<>不支持ref参数,因为它基于泛型。尽管我可以在回调函数中执行此操作,但我最好还是It.Is在ref参数的输入上添加一个约束()。 我知道Rhino Mocks支持此功能,但是我正在从事的项目已经在使用Moq。
293 c#  parameters  moq  ref  out 

11
为什么在传递对象时使用'ref'关键字?
如果将对象传递给方法,为什么要使用ref关键字?这不是默认行为吗? 例如: class Program { static void Main(string[] args) { TestRef t = new TestRef(); t.Something = "Foo"; DoSomething(t); Console.WriteLine(t.Something); } static public void DoSomething(TestRef t) { t.Something = "Bar"; } } public class TestRef { public string Something { get; set; } } 输出为“ Bar”,表示该对象已作为参考传递。

8
何时使用ref以及何时在C#中不需要
我有一个对象,它在程序的内存状态中,并且还有一些其他工作函数,我将该对象传递给该函数以修改状态。我一直在通过ref传递给worker函数。但是我遇到了以下功能。 byte[] received_s = new byte[2048]; IPEndPoint tmpIpEndPoint = new IPEndPoint(IPAddress.Any, UdpPort_msg); EndPoint remoteEP = (tmpIpEndPoint); int sz = soUdp_msg.ReceiveFrom(received_s, ref remoteEP); 这使我感到困惑,因为received_s和remoteEP都从函数返回了东西。为什么remoteEP需要一个ref和received_s不? 我也是交流程序员,所以在将指针弄出头脑时遇到了问题。 编辑:看起来C#中的对象是指向内部对象的指针。因此,当您将对象传递给函数时,可以通过指针修改对象的内容,唯一传递给该函数的是对象的指针,这样就不会复制对象本身。如果希望能够在函数中切换或创建一个类似于双指针的新对象,则使用ref或out。
104 c#  ref 

3
C ++ std :: ref(T)和T&?之间的区别
我对此程序有一些疑问: #include <iostream> #include <type_traits> #include <functional> using namespace std; template <typename T> void foo ( T x ) { auto r=ref(x); cout<<boolalpha; cout<<is_same<T&,decltype(r)>::value; } int main() { int x=5; foo (x); return 0; } 输出为: false 我想知道,如果std::ref不返回对象的引用,那它有什么作用?基本上,两者之间有什么区别? T x; auto r = ref(x); 和 T x; T &y = …
92 c++  reference  ref 

4
那将是“你好,世界!” 例如“ std :: ref”?
有人可以举一个简单的例子来演示功能std::ref吗?我的意思是一个示例,其中仅在无法解释时才使用其他一些构造(如元组或数据类型模板)的例子std::ref。 我在std::ref 这里和这里发现了两个问题。但是在第一个中,它涉及编译器中的错误;在第二个中,std::ref它不包含使用示例,std::ref它们涉及元组和数据类型模板,这使得对这些示例的理解变得复杂。
70 c++  c++11  std  ref 

3
这是std :: ref行为逻辑上的吗?
考虑以下代码: #include <iostream> #include <functional> int xx = 7; template<class T> void f1(T arg) { arg += xx; } template<class T> void f2(T arg) { arg = xx; } int main() { int j; j=100; f1(std::ref(j)); std::cout << j << std::endl; j=100; f2(std::ref(j)); std::cout << j << std::endl; } 执行时,此代码输出 …
68 c++  c++11  ref 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.