我在VS 2012中使用C#,在我的代码中添加了XML文档,并且我不小心打开了StyleCop规则(特别是SA1609),它"验证了public或protected属性包含带有值标记的文档头".
还有另一条规则(SA1604,此次故意启用),"验证文档标题包含格式正确的摘要标记".
但是,我很难看到你放在摘要标签中尚未包含的值标签中的内容.目前我的摘要标签说的是"获取或设置某些东西".应该在相应的值标签中添加什么来补充它?
(只是为了澄清,我很高兴设置StyleCop - 它只是在我意外打开所有文档规则时引起了我对值标记的注意)
MSDN对这个问题的帮助不大:
在XML文档中为属性提供摘要和值标记有什么意义?如何在不重复自己的情况下使用它们?
有时候,有一些东西是有用的:
class X {
...
}
class Y {
X X {
get { ... }
set { ... }
}
}
Run Code Online (Sandbox Code Playgroud)
因为X描述了类型是什么(作为类名),以及被访问/变异的值(作为属性名称).到现在为止还挺好.假设您想要做同样的事情,但是以通用的方式:
class Z<T> {
T T {
get { ... }
set { ... }
}
}
Run Code Online (Sandbox Code Playgroud)
对于此示例,编译器抱怨:The type 'Z<T>' already contains a definition for 'T'.
对于属性,变量和方法会发生这种情况,我不太明白为什么 - 当然编译器知道T是一个类型,因此可以像第一个例子中那样找出它?
简短版:为什么第一个例子有效,但不是第二个?
编辑:我刚刚发现,如果我"重构>重命名"类型参数,例如从T到U,IDE将其更改为:
class Z<U> {
U T {
get { ... }
set { ... }
}
}
Run Code Online (Sandbox Code Playgroud)
所以那里的东西知道什么是类型,什么是成员名称
这可能是http://crypto.stackexchange.com的问题,但我想我先在这里尝试,因为答案可能与.NET有关,而不是加密算法本身.
在RSACryptoServiceProvider类中,有一个SignHash方法,它包括:
通过使用私钥加密来计算指定哈希值的签名.
第一个参数是数据的哈希值(看起来很公平),但第二个参数是一个字符串,表明用于创建哈希值的算法.
问题是为什么哈希算法很重要?当然,所有方法需要做的是使用其私钥加密给定值并返回结果?如果它真的需要知道,为什么RSACryptoServiceProvider没有一个方法可以做到这一点(以及适当的验证方法)?
我正在尝试lock使用以下示例来研究.NET Code Contracts如何与关键字进行交互:
public class TestClass
{
private object o1 = new object();
private object o2 = new object();
private void Test()
{
Contract.Requires(this.o1 != null);
Contract.Requires(this.o2 != null);
Contract.Ensures(this.o1 != null);
lock (this.o2) {
this.o1 = new object();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码契约静态分析工具时,它会打印一个警告: Ensures unproven: this.o1 != null
如果我做了以下任何一项:
o2在lock给o1,o1将lock块内部更改为o2,lock块内添加第二行,分配new object给o2lock (this.o2)到if (this.o2 != null), …与我之前关于使浮动窗口独立于主 DockingManager 的问题相关,这里有一个类似但希望更简单的问题:
AvalonDock 浮动窗口是否可以设置为不位于主 DockingManager 窗口的“Always On Top”?
我正在翻阅AvalonDock 源代码,试图找到一种方法来做到这一点,但我还没有找到任何可行的方法。
理想情况下,我追求的是与 Visual Studio 具有相同效果的东西Tools > Options > Environment > Tabs and Windows > Floating tool windows always stay on top of the main window(至少在 VS2013 和 VS2015 中可用)。
我在下面的每一行都会遇到以下错误list<string>:
ISO C++ forbids declaration of 'list' with no typeexpected ';' before '<' token#ifndef __REGNAMEGENERATOR_H
#define __REGNAMEGENERATOR_H
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
#include <sstream>
#define Max_reg_Num 1000
using namespace std;
class RegNameGenerator{
private:
int intRegNumber;
int realRegNumber;
list<string> UsedIntReg; // error
list<string> UsedRealReg; // error
public:
RegNameGenerator();
~RegNameGenerator();
string generateIntReg();
string generateRealReg();
list <string> getUsedIntReg(); // error
list <string> getUsedRealReg(); // error
int getIntRegNum();
int getRealRegNum();
};
#endif
Run Code Online (Sandbox Code Playgroud)