据我所知,在C#类型/方法的XML注释中,可以在标记中引用泛型类型,如下所示:
///<see cref="name.space.typename<T&rt;(paramtype)">
Run Code Online (Sandbox Code Playgroud)
但我认为,还有另一种语法,不那么笨拙?什么,摆脱那些HTML实体的''?我现在找不到它.有人可以帮忙吗?
如何使用Visual Studio"在文件中查找"工具窗口查找包含特定短语的所有行,但同时按非注释行过滤?
必须有正则表达式吗?或者是正则表达式帮助的链接?
我想用ILNumerics绘制一些3D表面.我注意到,如果我旋转它,ILCube不会保持表面的形状,这是因为它试图使立方体适合ILPanel.但是,如果我使用ILCamera,它将保持形状,但周围没有立方体.这是一个例子,
private void ilPanel1_Load(object sender, EventArgs e)
{
var scene = new ILScene();
ILArray<float> A = ILSpecialData.torus(0.75f, 0.25f);
var sf = new ILSurface(A);
var pc = new ILPlotCube();
pc.TwoDMode = false;
scene.Add(pc);
pc.Add(sf);
sf.Colormap = Colormaps.Jet;
var cb = new ILColorbar();
cb.Location = new PointF(1, .1f);
sf.Children.Add(cb);
ilPanel1.Scene = scene;
}
Run Code Online (Sandbox Code Playgroud)
结果是
而对于ILCamera
private void ilPanel1_Load(object sender, EventArgs e)
{
var scene = new ILScene();
ILArray<float> A = ILSpecialData.torus(0.75f, 0.25f);
var sf = new ILSurface(A);
var cam = scene.Camera;
cam.Add(sf); …
Run Code Online (Sandbox Code Playgroud) 在处理大型数组时,我正在进行不安全的指针计算,如下所示:
*c++ = *a++ - *b++;
Run Code Online (Sandbox Code Playgroud)
它按预期工作.但对于就地操作,我也需要右侧的c指针:
[STAThread]
unsafe static void Main(string[] args) {
double[] arr = new double[] { 2, 4, 6, 8, 10 };
double scalar = 1;
fixed (double* arrP = arr) {
double* end = arrP + arr.Length;
double* p = arrP;
double* p2 = arrP;
while (p < end) {
// gives: 3,5,7,9,2,4827634676971E+209
*p++ = *p - scalar;
// gives correct result: 1,3,5,7,9
//*p = *p - scalar;
//p++;
}
}
Console.WriteLine(String.Join<double>(",", arr));
Console.ReadKey();
} …
Run Code Online (Sandbox Code Playgroud) 我的小压力测试在一个循环中分配随机长度数组(每个100..200MB),在64位Win7机器和32位XP(在VM中)上显示不同的行为.两个系统首先通常分配尽可能多的数组,以适应LOH.然后LOH变得越来越大,直到可用的虚拟地址空间被填满.到目前为止的预期行为.但是 - 在进一步的请求中 - 两者的行为都不同:
在Win7上抛出一个OutOfMemoryException(OOM),在XP看起来,堆增加甚至交换到磁盘 - 至少没有抛出OOM.(不知道,如果这可能与在虚拟盒中运行的XP有关.)
问题:运行时(或操作系统?)如何决定是否为托管内存分配请求,如果它太大而无法分配,生成OOM或大对象堆增加 - 最终甚至交换到磁盘?如果它被交换,OOM什么时候出现?
IMO这个问题对所有生产环境都很重要,可能涉及更大的数据集.不知何故,感觉更"安全",系统在这种情况下(通过交换)会比简单地抛出OOM而显着减速.至少,它应该以某种方式确定性,对吧?
@Edit:该应用程序是一个32位应用程序,因此在Win 7上以32位模式运行.
当我进入调试器并从主线程上的VS2010的立即窗口调用函数时,该函数在同一线程上正常执行.但是,只要它们处于休眠状态,看起来在评估期间不会执行其他线程.这种行为可以被某人证实吗?似乎是,通过Windows API进行的线程间通信在该上下文中无法正常工作?
由于这可能使评估在多线程场景中挂起,因此任何变通方法也都受到高度赞赏.
编辑:问题似乎更普遍.显而易见的即时窗口 - 与逐步调试相反 - 仅执行主/当前线程.到目前为止,我无法找到任何有关限制的官方列表.所以,如果有人可以提供帮助,那也会很棒......
c# debugging multithreading immediate-window visual-studio-2010
是否有任何关于静态只读参数初始化顺序的规范?
在下面的例子中,可以确定,数组总是以6的长度创建吗?
public class Foo {
private static readonly int MAX_STACKSIZE = 6;
private static readonly int[] m_stack = new int[MAX_STACKSIZE];
}
Run Code Online (Sandbox Code Playgroud)
或者有没有机会在MAX_STACKSIZE 之前初始化m_stack?
@Edit:将const更改为静态只读