小编Max*_*Max的帖子

C#中带有类型参数的泛型类型

我不认为这可以在C#中完成,但发布这个只是为了确保.这是我的问题.我想在C#中做这样的事情:

var x = 10;
var l = new List<typeof(x)>();
Run Code Online (Sandbox Code Playgroud)

要么

var x = 10;
var t = typeof(x);
var l = new List<t>();
Run Code Online (Sandbox Code Playgroud)

但当然这不起作用.虽然这不应该是一个问题,因为类型t在编译时被解析.我知道这可以通过反射来解决,但是因为类型在编译时已知使用反射将是过度的.

c# generics type-inference

14
推荐指数
2
解决办法
4940
查看次数

`fixed` vs GCHandle.Alloc(obj,GCHandleType.Pinned)

我试图找出如何使用fixed关键字工作定义的固定指针.我的想法是内部GCHandle.Alloc(object, GCHandleType.Pinned)被用于此.但是当我查看为以下C#代码生成的IL时:

unsafe static void f1()
{
  var arr = new MyObject[10];
  fixed(MyObject * aptr = &arr[0])
  {
     Console.WriteLine(*aptr);
  }
}
Run Code Online (Sandbox Code Playgroud)

我找不到任何痕迹GCHandle.

我看到该方法中使用固定指针的唯一提示是以下IL声明:

.locals init ([0] valuetype TestPointerPinning.MyObject[] arr,
              [1] valuetype TestPointerPinning.MyObject& pinned aptr)
Run Code Online (Sandbox Code Playgroud)

所以指针被声明为固定,并且不需要任何额外的方法调用来固定它.

我的问题是

  • 在声明中使用固定指针和使用GCHandle类固定指针之间有什么区别吗?
  • 有没有办法在不使用fixed关键字的情况下在C#中声明固定指针?我需要这个在循环中固定一堆指针,我无法使用固定关键字来做到这一点.

c#

14
推荐指数
1
解决办法
2501
查看次数

具有重复元素的无限序列

我需要创建一个包含无限重复元素子序列的无限序列.

[1; 2; 3; 4; 1; 2; 3; 4; 1; 2; 3; 4; ...]
Run Code Online (Sandbox Code Playgroud)

所以我写了这个:

let l = [1; 2; 3; 4]
let s = seq { while true do yield! l }
Run Code Online (Sandbox Code Playgroud)

有没有标准的方法(功能)来做到这一点?

f#

13
推荐指数
1
解决办法
3540
查看次数

将泛型函数作为参数传递

我知道我正在做的事情可以用不同的方式完成,但我对事情的运作方式很好奇.以下是一个不编译的简化代码,但它应该显示我的目标.

private void Execute()
{
    GeneralizedFunction("1", "2", i => Transform(i));
}

void GeneralizedFunction(string aStringA, string aStringB, Func<string, T> aAction)
{
    A result1 = aAction(aStringA);
    B result2 = aAction(aStringB);
    // Do something with A and B here
}

T Transform<T>(string aString)
{
    return default(T);
}
Run Code Online (Sandbox Code Playgroud)

Transform是从字符串到某个对象的通用转换(想想反序列化). GeneralizedFunction使用两个转换特化:一个用于类型A,一个用于类型B.我知道我可以通过许多其他方式执行此操作(例如通过引入对象类型的参数),但我正在寻找解释是否有可能或不可能使用泛型/ lambdas.如果Transform在作为参数传递给GeneralizedFunction之前是专用的,那么它是不可能的.那么问题是为什么这种可能性受到限制.

c# generics

12
推荐指数
2
解决办法
1万
查看次数

用于为Delphi生成单元依赖项的工具

是否有任何工具可以为Delphi单元生成依赖关系图,同时考虑条件编译指令.我想强调一下,这应该是单元依赖图,而不是类依赖.此外,能够重新排列和隐藏生成的图表中的某些部分也是很好的.

我已经尝试了解并且它似乎没有做我想要的.

delphi dependencies conditional-compilation

11
推荐指数
1
解决办法
5134
查看次数

如何在C#中固定指向托管对象的指针?

非托管代码调用我的函数.在第一个函数中,我应该将指针传递给我的托管对象.有时候稍后我的其他一些函数会被调用与指针之一相同的指针.我应该取消引用它并使用它来执行一些计算,然后如果不需要处理它.为了缩短故事,我需要固定该对象,以便GC在我处理它之前不会移动它.如何在C#中做到这一点?提前致谢.

c# c++ interop .net-4.0 marshalling

11
推荐指数
1
解决办法
2513
查看次数

Visual Studio在调试时锁定文件

我有一个包含几个项目的VS解决方案.在调试特定项目时,所有源文件都被VS锁定.我想解开debugee没有依赖的消息来源.有没有办法在一个解决方案中做到这一点?

更新:

我正在使用Win XP SP3 32位.Visual Studio 2010,C#.编辑并继续启用.该解决方案包含6个项目(实际上数量不重要),其中5个项目依赖于使用Entity Framework的数据访问层项目.5个中没有一个具有任何相互依赖性.它们是WinForms和控制台应用程序.我希望能够运行其中一个项目,并在不停止第一个项目的情况下对其他项目进行更改.问题是启动和停止项目需要相当长的时间.

ide visual-studio-2010 visual-studio

10
推荐指数
1
解决办法
8055
查看次数

SQL Server NULL约束

SQL Server 2008中是否可以创建这样的约束,以限制两列同时具有NULL值?以便

Column1 Column2
NULL    NULL   -- not allowed
1       NULL   -- allowed
NULL    2      -- allowed
2       3      -- allowed
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server constraints sql-server-2008

10
推荐指数
1
解决办法
3182
查看次数

AccuracyGoal和PrecisionGoal之间的区别

对于NIntegrate功能,AccuracyGoal和PrecisionGoal有什么区别?

wolfram-mathematica

10
推荐指数
1
解决办法
2460
查看次数

订阅变量

有没有办法迫使Mathematica独立于其未订阅的对应物处理下标变量?进一步来说.说,我有以下定义:

Subscript[b, 1] = {{1, 2}}
Subscript[b, 2] = {{3, 4}}
b = Join[Subscript[b, 1], Subscript[b, 2]]
Run Code Online (Sandbox Code Playgroud)

现在我用的时候

Subscript[b, 1] 
Run Code Online (Sandbox Code Playgroud)

Mathematica将替换它

Subscript[{{1, 2}, {3, 4}},1]
Run Code Online (Sandbox Code Playgroud)

当我希望这些是三个独立的值时,所以改变b不会影响下标[b,..].可能吗?

wolfram-mathematica

10
推荐指数
1
解决办法
6259
查看次数