Questions tagged «reference»

引用是使程序能够间接访问计算机内存或某些其他存储设备中的特定数据(例如变量或记录)的值。


26
如何通过引用传递变量?
Python文档似乎尚不清楚参数是通过引用还是通过值传递,并且以下代码产生不变的值“原始” class PassByReference: def __init__(self): self.variable = 'Original' self.change(self.variable) print(self.variable) def change(self, var): var = 'Changed' 我可以做些什么来通过实际引用传递变量吗?

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

20
如何复制字典并仅编辑副本
有人可以向我解释一下吗?这对我来说毫无意义。 我将字典复制到另一个字典中,然后编辑第二个字典,并且两者都已更改。为什么会这样呢? >>> dict1 = {"key1": "value1", "key2": "value2"} >>> dict2 = dict1 >>> dict2 {'key2': 'value2', 'key1': 'value1'} >>> dict2["key2"] = "WHY?!" >>> dict1 {'key2': 'WHY?!', 'key1': 'value1'}


30
找到的程序集的清单定义与程序集引用不匹配
我试图在C#Windows窗体应用程序(Visual Studio 2005)中运行一些单元测试,但出现以下错误: System.IO.FileLoadException:无法加载文件或程序集“实用程序,版本= 1.2.0.200,区域性=中性,PublicKeyToken = 764d581291d764f7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的异常:0x80131040)** 在x.Foo.FooGO() 在Foo.cs:第123行的x.Foo.Foo2(String groupName_) 在FooTests.cs中的x.Foo.UnitTests.FooTests.TestFoo():行98 ** System.IO.FileLoadException:无法加载文件或程序集“实用程序,版本= 1.2.0.203,区域性=中性,PublicKeyToken = 764d581291d764f7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040) 我查看自己的参考文献,但只有一个参考文献Utility version 1.2.0.203(另一个是旧的)。 关于我如何找出试图引用此DLL文件旧版本的任何建议? 此外,我认为我的硬盘上甚至没有这个旧程序集。有什么工具可以搜索这个旧版本的程序集吗?

14
“ ==”和“是”之间有区别吗?
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 我的Google Fu使我失败了。 在Python中,以下两个相等测试是否等效? n = 5 # Test one. if n == 5: print 'Yay!' # Test two. if n is 5: print 'Yay!' 这是否适用于您要比较实例(list说)的对象? 好的,这样可以回答我的问题: L = [] L.append(1) if L == [1]: print 'Yay!' # Holds true, but... if L is [1]: print 'Yay!' # Doesn't. 因此,==测试会重视在哪里is进行测试以查看它们是否是同一对象?

10
MongoDB关系:嵌入还是引用?
我是MongoDB的新手-来自关系数据库背景。我想设计一个带有一些注释的问题结构,但是我不知道该使用哪种关系进行注释:embed或者reference? 一个带有一些注释的问题,例如stackoverflow,将具有以下结构: Question title = 'aaa' content = bbb' comments = ??? 首先,我想使用嵌入的注释(我认为embed在MongoDB中建议这样做),如下所示: Question title = 'aaa' content = 'bbb' comments = [ { content = 'xxx', createdAt = 'yyy'}, { content = 'xxx', createdAt = 'yyy'}, { content = 'xxx', createdAt = 'yyy'} ] 显而易见,但是我担心这种情况:如果要编辑指定的注释,如何获取其内容和问题?没有_id让我找到一个问题,也没有question_ref让我找到它的问题。(我真是个新手,如果不使用_idand 我不知道有没有办法做到这一点question_ref。) 我必须ref不用embed吗?然后,我必须创建一个新的评论集吗?
524 mongodb  reference  embed 

16
何时使用引用与指针
我了解指针与引用的语法和一般语义,但是我应该如何确定何时在API中使用引用或指针多少合适? 自然,有些情况需要一个或另一个(operator++需要一个引用参数),但是总的来说,我发现我更喜欢使用指针(和const指针),因为语法很清楚地表明,变量是以破坏性方式传递的。 例如下面的代码: void add_one(int& n) { n += 1; } void add_one(int* const n) { *n += 1; } int main() { int a = 0; add_one(a); // Not clear that a may be modified add_one(&a); // 'a' is clearly being passed destructively } 使用指针,总是(更)明显的是怎么回事,所以对于API和诸如此类的情况,其中最关注清晰度的指针不是比引用更合适吗?这是否意味着仅在必要时才使用引用(例如operator++)?两者之间是否存在性能问题? 编辑(已过时): 除了允许使用NULL值和处理原始数组外,选择还取决于个人喜好。我接受了下面引用Google的C ++样式指南的答案,因为他们提出的观点是“引用可能会造成混淆,因为引用具有值语法但具有指针语义。” 由于清理不应该为NULL的指针参数需要进行额外的工作(例如,add_one(0)将在运行时调用指针版本并在运行时中断),因此从可维护性的角度来看,使用必须在存在对象的引用是有意义的,尽管这很遗憾。失去语法清晰度。
381 c++  pointers  reference 

9
为什么不能建立参考向量?
当我这样做时: std::vector<int> hello; 一切正常。但是,当我将其设为参考向量时: std::vector<int &> hello; 我收到可怕的错误,例如 错误C2528:“指针”:指向引用的指针不合法 我想将一堆对结构的引用放到一个向量中,这样我就不必插手指针了。为什么vector对此大发脾气?我唯一的选择是使用指针向量吗?

16
返回C ++参考变量的做法是否有害?
我认为这有点主观;我不确定这种意见是否会一致(我已经看到很多返回引用的代码段)。 根据我对这个问题的评论,关于初始化引用,返回引用可能是邪恶的,因为(据我所知),因为它更容易错过删除它,这可能导致内存泄漏。 这让我感到担心,因为我遵循了示例(除非我在想象中的事情),并且在相当多的地方进行了此操作……我是否误解了?是邪恶的吗?如果是这样,到底有多邪恶? 我觉得由于我的指针和引用混合在一起,再加上我是C ++的新手,再加上对何时使用什么的完全困惑,我的应用程序一定是内存泄漏地狱... 另外,我了解使用智能/共享指针通常被认为是避免内存泄漏的最佳方法。
341 c++  reference  c++-faq 

30
获取“找不到类型或名称空间名称”,但一切似乎还好吗?
我得到: 找不到类型或名称空间名称 VS2010中的C#WPF应用出现错误。这部分代码编译良好,但是突然我收到了此错误。我试着删除项目参考和using语句,关闭VS2010并重新启动,但是仍然有这个问题。 任何想法为什么会发生这种情况,好像我在做正确的事情using? 我还在VS2010中指出,该名称空间的intellisense可以正常工作,因此VS2010似乎具有项目参考并且一方面可以看到名称空间,但是在编译过程中没有看到它?

19
如果在解决方案中使用项目依赖项,MSBuild不会复制引用(DLL文件)
我的Visual Studio解决方案中有四个项目(每个人都针对.NET 3.5)-对于我的问题,只有这两个很重要: MyBaseProject <-该类库引用了第三方DLL文件(elmah.dll) MyWebProject1 <-此Web应用程序项目对MyBaseProject的引用 我加入了elmah.dll参考MyBaseProject通过点击在Visual Studio 2008中的“添加引用...”→“浏览”选项卡→选择“elmah.dll”。 《 Elmah参考》的属性如下: 别名-全球 复制本地-正确 文化- 说明-ASP.NET的错误记录模块和处理程序(ELMAH) 文件类型-组装 路径-D:\ webs \ otherfolder \ _myPath \ __ tools \ elmah \ Elmah.dll 解决-正确 运行时版本-v2.0.50727 指定版本-否 强名-错误 版本-1.0.11211.0 在MyWebProject1中,我通过以下方式添加了对Project MyBaseProject的引用:“添加引用...”→“项目”选项卡→选择“ MyBaseProject”。除了以下成员外,此引用的属性相同: 说明- 路径-D:\ webs \ CMS \ MyBaseProject \ bin \ Debug \ …

11
什么时候应该在C ++中使用new关键字?
我使用C ++已有很短的时间了,而且我一直在想new关键字。简而言之,我应该使用它吗? 1)使用新关键字... MyClass* myClass = new MyClass(); myClass->MyField = "Hello world!"; 2)没有新关键字... MyClass myClass; myClass.MyField = "Hello world!"; 从实现的角度看,它们似乎没有什么不同(但是我敢肯定它们是...)。但是,我的主要语言是C#,当然第一种方法是我习惯的。 困难似乎是方法1与std C ++类一起使用更困难。 我应该使用哪种方法? 更新1: 最近,我将new关键字用于超出范围(即从函数返回)的大型数组的堆内存(或free store)。在使用堆栈之前,该堆栈导致一半的元素在范围之外损坏,切换到堆使用情况可确保元素完好无损。好极了! 更新2: 我的一个朋友最近告诉我,使用new关键字有一个简单的规则;每次键入时new,请键入delete。 Foobar *foobar = new Foobar(); delete foobar; // TODO: Move this to the right place. 这有助于防止内存泄漏,因为您始终必须将删除项放在某个位置(例如,将其剪切并粘贴到析构函数或其他方法时)。


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.