我不认为这可以在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在编译时被解析.我知道这可以通过反射来解决,但是因为类型在编译时已知使用反射将是过度的.
我试图找出如何使用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#中声明固定指针?我需要这个在循环中固定一堆指针,我无法使用固定关键字来做到这一点.我需要创建一个包含无限重复元素子序列的无限序列.
[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)
有没有标准的方法(功能)来做到这一点?
我知道我正在做的事情可以用不同的方式完成,但我对事情的运作方式很好奇.以下是一个不编译的简化代码,但它应该显示我的目标.
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之前是专用的,那么它是不可能的.那么问题是为什么这种可能性受到限制.
是否有任何工具可以为Delphi单元生成依赖关系图,同时考虑条件编译指令.我想强调一下,这应该是单元依赖图,而不是类依赖.此外,能够重新排列和隐藏生成的图表中的某些部分也是很好的.
我已经尝试了解并且它似乎没有做我想要的.
非托管代码调用我的函数.在第一个函数中,我应该将指针传递给我的托管对象.有时候稍后我的其他一些函数会被调用与指针之一相同的指针.我应该取消引用它并使用它来执行一些计算,然后如果不需要处理它.为了缩短故事,我需要固定该对象,以便GC在我处理它之前不会移动它.如何在C#中做到这一点?提前致谢.
我有一个包含几个项目的VS解决方案.在调试特定项目时,所有源文件都被VS锁定.我想解开debugee没有依赖的消息来源.有没有办法在一个解决方案中做到这一点?
更新:
我正在使用Win XP SP3 32位.Visual Studio 2010,C#.编辑并继续启用.该解决方案包含6个项目(实际上数量不重要),其中5个项目依赖于使用Entity Framework的数据访问层项目.5个中没有一个具有任何相互依赖性.它们是WinForms和控制台应用程序.我希望能够运行其中一个项目,并在不停止第一个项目的情况下对其他项目进行更改.问题是启动和停止项目需要相当长的时间.
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) 对于NIntegrate功能,AccuracyGoal和PrecisionGoal有什么区别?
有没有办法迫使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,..].可能吗?
c# ×4
generics ×2
.net-4.0 ×1
c++ ×1
constraints ×1
delphi ×1
dependencies ×1
f# ×1
ide ×1
interop ×1
marshalling ×1
sql ×1
sql-server ×1
t-sql ×1