问题标签 [using]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
514 浏览

c# - 使用 `using(...)` 有效地无用和/或效率低下?

以下代码是否使using(...)功能/目的无关紧要?
它会导致GC性能不足吗?

输出:超级一次性

我对using(...)功能的理解是立即强制处置DisposableClass. 然而在代码块中,我们将类添加到字典集合中。我的理解是,一个类本质上是一个引用类型。所以我的实验是看看以这种方式添加到集合中的一次性对象会发生什么。

在这种情况下DisposableClass仍然是相当活跃的。类是一种引用类型 - 所以我的假设变成了集合不仅仅是引用这种类型,而是确实将类作为一个值。但是,这也没有任何意义。

那么到底发生了什么?

编辑:修改后的代码,输出证明对象没有死,正如一些答案所暗示的那样。

第二次编辑:当我经历了更多代码时,这归结为:

单步执行代码(在 处有一个断点private void Dispose(bool dispose)),将 wherefalse传递给方法,因此必须在此处正确处理资源。无论如何,这门课还活着,但你肯定是在为例外做好准备。答案让我更加好奇...

0 投票
5 回答
19604 浏览

linq - 在 LINQ-SQL 中,包装 DataContext 是一个 using 语句 - 优点缺点

有人可以就性能、内存使用、编码的便利性、正确的做法等因素在使用语句中包装 DataContext 或不在 LINQ-SQL 中包装 DataContext 之间的优缺点发表意见吗?

更新在一个特定的应用程序中,我体验到,如果没有将 DataContext 包装在 using 块中,由于没有为 GC 释放活动对象,内存使用量会不断增加。如在下面的示例中,如果我持有对 q 对象列表的引用并访问 q 的实体,我将创建一个不为 GC 释放的对象图。

使用 DataContext

DataContext 不使用并保持活动状态

谢谢。

0 投票
6 回答
1164 浏览

c# - C#:使用块:对象重新初始化

在“使用”块内重新初始化是一个坏主意,应始终避免。我还是要问这个:

为什么“使用”调用处理原始值而不是最后一个引用或重新初始化(如果使用 try finally 块会发生这种情况)

在上面的代码中, dispose 将在原始引用而不是较新的引用上调用。这可以通过在 dispose 方法中的控制台上打印一些内容来轻松验证。

然而,使用 try{} finally 代码调用最后一个引用 dispose 方法。

MSDN: using 语句可确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。

基本上“使用”翻译为:

0 投票
3 回答
160 浏览

c# - using 块是否为 GC 创建和维护引用?

这主要是出于好奇,因为有更好的方法来实现我能想到的几乎所有用例(至少在 C# 和我经常使用的其他语言中),但我最近在这里看到了一个作用域互斥锁,它是一个很酷的概念。

我的问题是, using 语句是否维护对它所作用的对象的引用(即:防止 GC 运行)?

例如,如果我要这样做:

ScopedMutex 对象会保持其存在到 using 块的末尾,还是 GC 可以运行并在块中间处理它?

0 投票
5 回答
1086 浏览

c# - using 语句的使用

可能的重复:
哪个更好,何时:在 C# 中的 IDisposable 上使用语句或调用 Dispose()?
我什么时候应该在 C# 中使用“使用”块?
使用 using if 语句?

正确地,我将如何使用using语句?我有一个教程打开,我不明白。而且我可以看到超过 1 种不同的实现方式。哪个是正确的或偏爱的方式?

0 投票
5 回答
24963 浏览

c# - 从 using() 语句内部返回是否有任何副作用?

从获取 DataContext 的 using 语句中返回方法值似乎总是可以正常工作如下所示:

但是我总是觉得我应该在打破 using 括号之前关闭一些东西,例如通过在 using 语句之前定义事务,在括号获取它的值,然后在括号之后返回

在使用括号之外定义和返回变量会是更好的做法还是以任何方式节省资源?

0 投票
3 回答
721 浏览

c# - 单独文件中的 C# 命名空间/类在查看时导致错误

我有两个项目“HOD”和“控制器”。Controllers 是一个命名空间为“Controllers”的类库。在 HOD 的代码文件中,我试图通过“使用控制器”来引用控制器命名空间。我在 HOD 项目中添加了对 Controllers 的引用,它确实显示在 VS2008 中的引用文件夹下。

当我构建项目时,我没有收到任何错误,但是当我去查看页面时,我收到错误“找不到类型或命名空间名称“控制器”(您是否缺少 using 指令或程序集引用?)” .

Controllers.cs(类库,控制器项目)

index.aspx.cs(HOD 项目)

该项目位于我们的网络服务器上,Controllers.dll 与 HOD.dll 位于同一 bin 文件夹中。在此先感谢您的帮助!

编辑:.sln 内容

编译器输出

------ 重建所有开始:项目:控制器,配置:调试任何 CPU ------ C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701, 1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C :\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C: \Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\Controllers.dll /目标:库 Class1.cs 属性\AssemblyInfo.cs

编译完成 -- 0 个错误,0 个警告 Controllers -> Y:\HOD2\Controllers\bin\Debug\Controllers.dll ------ Rebuild All started: Project: HOD, Configuration: Debug Any CPU ----- - C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:Y:\HOD2\Controllers \bin\Debug\Controllers.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Configuration.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework \v3.5\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\Windows \Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft。NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll /reference:C:\Windows\Microsoft.NET\Framework\ v2.0.50727\System.Web.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Web.Extensions.Design.dll" /reference:"C:\程序文件 (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Web.Extensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.Mobile.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.Services.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference :"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /optimize- /out:obj\Debug\HOD.dll /目标:库 index.aspx.cs index.aspx.designer.cs Properties\AssemblyInfo.cs

编译完成 -- 0 个错误,0 个警告 HOD -> Y:\HOD2\bin\HOD.dll ========== 全部重建:2 个成功,0 个失败,0 个跳过 ======= ===

0 投票
8 回答
307 浏览

c# - 使用“using”关键字时会处理什么

让我们举个例子:

SomeOtherObject还实现了 IDisposable。当 SomeObject 被处置时, SomeOtherObject 也会被处置吗?SomeOtherObject 会发生什么?(SomeObject 的 Dispose 方法中没有实现 SomeOtherObject 的处理)

0 投票
9 回答
21783 浏览

scala - “使用”功能

我已经定义了“使用”功能如下:

我可以这样使用它:

现在我很好奇如何定义“使用”函数来获取任意数量的参数,并能够分别访问它们:

0 投票
2 回答
419 浏览

java - 如何使用私钥

在我的搜索中,我发现我们可以生成名为 myrsakey.pem 的私钥。使用此密钥的此密钥的目的是什么。帮助我。

问候莎伦。