我理解提供一个间接访问类成员的接口的好处.我的问题是:并不是你已经可以用任何OO语言完成的东西(有些东西)
public int NormalClass::getQuality() {
return this->quality;
}
Run Code Online (Sandbox Code Playgroud)
和
protected void NormalClass::setQuality(int q) {
this->quality = q;
}
Run Code Online (Sandbox Code Playgroud)
?
除了纯粹的美学外,.NET属性还提供了哪些额外的好处?
如果你能为它做出令人信服的论证,我会接受"可读性"; 但就个人而言,我倾向于认为get/set函数比属性更具可读性,因为它明确地是一个函数而不是一个直接值.
编辑:感谢大家的回答!这对我来说真的很有用; 总结一下我从所有人那里收集/学到的东西,以下是我到目前为止得出的一些结论:
现在,到目前为止,有两点已经在2或3个答案中做出,我个人觉得有点可疑:这些属性意味着廉价的读/写操作,因此可以与简单变量基本相同的方式使用.我关于这一点的问题是,实际上强制执行此操作的属性中没有固有的东西; 这只是他们如何应该使用.对我来说,这是类似于一个"shouldBePrivate"限定符指示值应该只由它自己的类直接访问,但仍然可以从外部访问无论如何; 还是在街上巡逻的警察部队提醒我们,我们应该表现自己,但在我们开始犯罪时实际上并没有干涉(如果没有强制执行,它对我们真正做了什么?).
如果属性具有某种内置机制来确保读/写便宜,我会对这一点印象更深刻.
我正在开发一个项目,用户可以保存他们的工作(最有可能是硬盘驱动器,但也可能是其他媒体,包括软盘).当然,流行的文件 > 保存选项,但工具栏按钮怎么样?
到目前为止,最流行的图标是软盘.但是,用户写入软盘的可能性非常小.不过,我认为软盘比文字更具代表性.
最后,我可能会坚持使用软盘图标来保持大多数用户熟悉的惯例但是......任何人对如何更新这个旧图标都有任何想法?

当我尝试启动JBoss时,我收到以下错误
10:10:43,298 INFO [WebService] Using RMI server codebase: http://127.0.0.1:8083/
10:10:43,938 ERROR [AbstractKernelController] Error installing to Start: name=jboss:service=Naming state=Create mode=Manual requiredState=Installed
java.rmi.server.ExportException: Port already in use: 1098; nested exception is:
java.net.BindException: Address already in use: JVM_Bind
at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:249)
at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:184)
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:382)
at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:116)
at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:180)
at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:293)
at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:256)
Run Code Online (Sandbox Code Playgroud)
但是当我试图查看正在收听的端口时.我没看到那个港口!
H:\>netstat -a -n -o
Active Connections
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 824
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING 2036
TCP 0.0.0.0:3389 …Run Code Online (Sandbox Code Playgroud) 我在Perl Monks上查看一些较旧的Perl代码,以找出使用Win32 :: OLE和MS Word编程.整个代码中分散的是名为$ MS :: Word之类的变量,其声明中没有包含" my ".在Google上阅读了一下之后,我明白这些被称为"包变量"与使用我的声明的"词汇变量" .
我的第一个问题是' 什么是包变量有用?".我(想)我理解词汇变量是什么,但我不明白包变量的目的或它们的用法与词汇有何不同,所以我的第二个问题是,' 词法和包变量有什么区别?"
C#中的相对路径对我来说很复杂.在一种情况下,我将一组Texture2d对象处理到我的应用程序,它获取文件名并使用它来定位文件并将纹理加载到Image对象中.然后,我从存储在类文件中的相对路径加载图像,并使用需要相对于Content/gfx的相对路径.但如果我不加载这些纹理,这些相对路径将失败.我怎样才能认识到我的相对路径不会失败?在Web工作中,所有rel路径都与我们正在处理的文件所在的文件夹相关,我可以这样设置它并将所有rel路径设置为我的应用程序所在的根文件夹吗?
我正在用Python实现一个交叉制表库,作为我新工作的编程练习,我已经实现了有效但不优雅且多余的要求.我想要一个更好的模型,它可以在基本模型之间进行漂亮,干净的数据移动,作为平面文件中的表格数据存储,以及可能会对此提出的所有统计分析结果.
现在,我从表格中每行的一组元组进展到计算感兴趣元组外观频率的直方图,到一个序列化器 - 有点笨拙 - 将输出编译成一组用于显示的表格单元格.但是,我最终不得不经常回到桌子或直方图,因为从来没有足够的信息.
那么,有什么想法吗?
编辑:这是一些数据的例子,以及我希望能够从中构建的数据.注意 "." 表示一些"缺失"数据,只是有条件地计算.
1 . 1
1 0 3
1 0 3
1 2 3
2 . 1
2 0 .
2 2 2
2 2 4
2 2 .
Run Code Online (Sandbox Code Playgroud)
如果我正在查看上面第0列和第2列之间的相关性,那么这就是我所拥有的表格:
. 1 2 3 4
1 0 1 0 3 0
2 2 1 1 0 1
Run Code Online (Sandbox Code Playgroud)
另外,我希望能够计算频率/总频率,频率/小计和c的比率.
有没有人知道为Visual Studio 2005和2008解决方案删除vss源代码控制绑定的好方法,而无需在visual studio中打开它?
我曾经使用过:del /s /f /a: *.*scc
然后当我打开visual studio时它会提示我并给我"永久删除绑定"的选项.
现在,当我尝试这个时,它重新创建.vssscc文件并告诉我我的工作副本包含不同版本的.vsscc文件.没有选项可以删除源代码管理绑定.
真正的问题是我正在尝试使用源安全的旧解决方案.但是,如果我打开解决方案,它仍然绑定到源代码控制,它将获得最新版本的网站.即使我没有选中"源控制 - >环境 - >打开解决方案或项目时获取所有内容"选项,它也会这样做.
我目前正在为一个由10名开发人员组成的团队研究新的源代码控制选项.我们在Visual Studio 2008中进行.net开发.我们目前使用VSS进行源代码控制.
我们正在寻找一个集中的源代码控制解决方案(非分布式),带有一个很好的Visual Studio插件.我的经理推荐了Plastic SCM,我总是听到Subversion的好消息.我正在尝试决定是否应该采用Subversion或Plastic SCM.
关于Plastic SCM的信息不多(除了他们写的内容),我想知道它是否是一个很好的解决方案.它们听起来好像分支更简单.
另一方面,Subversion拥有一个强大,成熟的社区,并且已经过彻底的现场测试.
这些工具的优缺点是什么?
还有其他任何你可以建议的工具吗?
谢谢
是否可以使用与此类似的单个表达式在jQuery中选择当前上下文的兄弟的子节点?
$('~ div > span', this)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这对我不起作用,所以我不相信jQuery在表达式中支持这种类型的链接.然而,我能够使用以下方法:
$('> span', $('~ div', this))
$(this).siblings('div').children('span')
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来使用以下API调用来获取兄弟姐妹的孩子,或者解释为什么它不可能:
jQuery( expression, context )
Run Code Online (Sandbox Code Playgroud) 我想创建一个Web应用程序,允许用户上传一些C代码,并查看其执行结果(代码将在服务器上编译).用户不受信任,这显然具有一些巨大的安全隐患.
所以我需要为应用程序创建一些沙盒.在最基本的层面上,我想限制对某些指定目录的文件系统访问.我无法直接使用chroot jails,因为Web应用程序不是以特权用户身份运行.我想一个suid可执行文件设置jail将是一个选项.
上传的程序相当小,因此它们应该快速执行(最多几秒钟).因此,我可以在预设超时后终止进程,但是如何确保它不会产生新进程?或者,如果我不能,那么杀死整个pgid是一种可靠的方法吗?
除了"根本不做"之外,最好的方法是什么?:)我错过了哪些其他明显的安全问题?
FWIW,Web应用程序将用Python编写.