析构函数应该只释放对象所持有的非托管资源,并且不应该引用其他对象.如果您只有托管引用,则不需要(也不应该)实现析构函数.您希望这仅用于处理非托管资源.因为拥有析构函数需要一些成本,所以你应该只在消耗有价值的非托管资源的方法上实现它.
文章没有深入讨论这个问题,但在C#中使用析构函数会涉及哪些成本?
注意:我知道GC以及在可靠的时候没有调用析构函数的事实,除此之外,还有什么吗?
XslTransform似乎已被Microsoft弃用,转而使用XslCompiledTransform.从理论上讲,如果我在执行应用程序期间只进行一次转换,那么解释XSLT(通过XslTransform)是否应该比编译它更快?如果是这样,XslTransform是否写得如此糟糕以至于对XslCompiledTransform所做的改进不仅仅是为了弥补它?
我正在努力学习一些红宝石.想象一下,我正在循环并执行一个长时间运行的过程,在这个过程中,我想在必要时获得一个微调器.
所以我能做到:
a=['|','/','-','\\']
aNow=0
# ... skip setup a big loop
print a[aNow]
aNow += 1
aNow = 0 if aNow == a.length
# ... do next step of process
print "\b"
Run Code Online (Sandbox Code Playgroud)
但我认为做得更干净:
def spinChar
a=['|','/','-','\\']
a.cycle{|x| yield x}
end
# ... skip setup a big loop
print spinChar
# ... do next step of process
print "\b"
Run Code Online (Sandbox Code Playgroud)
当然,spinChar调用想要一个块.如果我给它一个块,它将无限期地挂起.
我怎样才能得到这个街区的下一个?
在Java中,当HTTP结果为404范围时,此代码抛出异常:
URL url = new URL("http://stackoverflow.com/asdf404notfound");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.getInputStream(); // throws!
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我碰巧知道内容是404,但我仍然想要阅读回复的主体.
(在我的实际情况中,响应代码是403,但响应正文解释了拒绝的原因,我想将其显示给用户.)
我如何访问响应正文?
我有一个具有大量虚方法的ac #Class,其中一些方法基本上是抽象的(它们完全在子类中实现,基类是空的).
为了让它进行编译,我在基类中抛出一个InvalidOperationException,并对应该做什么做出评论.这只是感觉很脏.
有没有更好的方法来设计我的课程?
编辑:对于将在加拿大运行的应用程序的中间层,一半的方法是通用的,因此是虚拟的.一半的方法都是省特定的.
Public class PersonComponent()
{
public GetPersonById(Guid id) {
//Code to get person - same for all provinces
}
Public virtual DeletePerson(Guid id) {
//Common code
}
Public virtual UpdatePerson(Person p) {
throw new InvalidOperation("I wanna be abstract");
}
Public Class ABPersonComponent : PersonComponent
{
public override DeletePerson(Guid id)
{
//alberta specific delete code
}
public override UpdatePerson(Person p)
{
//alberta specific update codecode
}
}
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的
我有一个简单的文件主机,它给文件一个唯一的ID,并将它们存储在一个目录中.我被告知这将在未来引起问题,我想知道我应该注意哪些事项,以确保它能够顺利地应用于未来和未来.
另外,是否存在通过发送头信息和readfile()来强制下载的性能问题?保留文件名并允许直接下载使用不是使用脚本会更好吗?
谢谢
存在用于Python的静态分析工具,但编译时间检查往往与Python所包含的运行时绑定哲学截然相反.这可能与一个静态分析工具来执行一些"包装标准Python解释器使用严格 "般的约束,但我们没有看到任何广泛采用的这样的事情.
有没有关于Python的东西会使"使用严格"的行为变得不必要或特别不受欢迎?
或者,Perl中的"使用严格"行为是否已被广泛采用?
注意:"必要"是指"实际必要",并非绝对必要.显然你可以在没有"use strict"的情况下编写Perl,但是(从我所见过的)大多数Perl程序员都会使用它.
注意:Python解释器包装器不需要 "使用严格"类似的约束 - 您可以使用类似于"use strict"的伪编译指示,这将被普通解释器忽略.我不是在谈论添加语言级功能.
更新:解释Perl每条评论中"use strict"的作用.(官方文档链接在第一段.)
"use strict"指令有三个不同的组件,其中只有两个非常有趣:
use strict vars:在程序中静态检查词法范围的变量用法.(请记住,在Python中,基本上只有global范围和local范围).许多Python短信检查这种事情.因为它是他们可以做的唯一的静态分析,所以直言不讳地假设你使用简单的词汇范围,并在你告诉他们闭嘴之前警告你那些看似错误的东西; 即
FOO = 12
foo += 3
Run Code Online (Sandbox Code Playgroud)
如果您没有对命名空间做任何想法,那么检查拼写错误就很有用.
use strict refs:防止符号命名空间解除引用.Python最接近的模拟是使用locals()和globals()进行符号绑定和标识符查找.
use strict subs:在Python中没有真正的模拟.
python compiler-construction perl static-analysis use-strict
我需要在C++中真正探索Windows中的套接字的书籍我一直在寻找教程,但他们不知道什么意思他们没有详细说明,所以我需要在C++ for Windows上使用Winsock书籍
我在应用商店中有一个应用程序.我已向该应用提交了3个更新.这3个更新中的2个基于自最初提交以来根本没有改变的内容而被拒绝.
我认识到每次审查我的申请时他们都有不同的人.
但是,净效应是: