在 Delphi(或任何 Pascal)中,您可以声明子范围类型,因此如果您尝试从允许的范围之外分配值,则会出现编译器错误。
var
i: 1..8;
begin
i := 8; // i := 9 would not work
Run Code Online (Sandbox Code Playgroud)
这可以在 C# 中完成吗?我可以想象创建自定义结构,例如SubrangeType<byte>但我正在寻找内置的东西。
编辑: xanatos 和 DavidHeffernan 的评论让我对更具体的问题有了想法。Delphi 中的子范围检查在运行时和编译时都可用。使用自定义结构在 C# 中可以在运行时实现它,但是是否可以在 C# 中实现对编译时的检查?
我正在使用带有 CLR(通用语言运行时)的 Visual Studio 2010。我想将 unsigned char * 从 compress 函数返回到 main 函数,但是 unsigned char * 和 char * 都给出了错误
“错误 7 错误 C2440:'=':无法从 'char *' 转换为 'unsigned char *' F:\4-2\Thesis\PROJECT\Database Compression Main\Database Compression 2\db_comp_main.cpp 21 “
unsigned char* compressor(char *data)
{
unsigned char *compressed_string;
//With some process I had compressed string of data variable as unsigned char* in variable compressed_string successfully and also printed here. Now want to return it from here.
return compressed_string;
}
int main()
{
unsigned …Run Code Online (Sandbox Code Playgroud) 我可以使用打开的连接从存储过程调用 dll 吗?
我有一个从 SQL Server 获取数据的 dll,当我从存储过程调用它时,我不想打开一个新连接。
谢谢
这是一个例子
public class Class1
{
public static SqlString GetName(SqlString str)
{
SqlCommand cmd = new SqlCommand(str.ToString());
cmd.CommandType = System.Data.CommandType.Text;
string name = cmd.ExecuteScalar().ToString();
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
这是 SQL 代码
CREATE FUNCTION fn_TestConnection
(
@str nvarchar(255)
)
RETURNS nvarchar(max)
AS EXTERNAL NAME TestConnection.[TestConnection.Class1].GetName
GO
SELECT dbo.fn_TestConnection('SELECT FName FROM Clients WHERE Id = 1' )
Run Code Online (Sandbox Code Playgroud) 是否可以通过禁用Windows中的中断来实现关键部分锁定?如果是这种情况,那么当一个线程处于临界区的中间时,它就不能被抢占.
但是,如果是这样的话,也就是说,如果在执行一个关键部分线程不能被抢占,这样做只能让整点脉冲有些显示器不那么重要比起来,如果线程可能被要求撤离CPU即使在它正处于关键部分的中间.
所以,我真正的问题是:
如何在Windows中实现监视器?
线程在关键部分的中间是否可以被抢占?
我有简单的控制台应用程序(目标框架4.5.2):
using System;
public class SosTest
{
public class Foo
{
public Foo()
{
Console.WriteLine("Creation of foo");
}
}
static void Main(string[] args)
{
var n1 = new Foo();
var n2 = new Foo();
Console.WriteLine("Allocated objects");
Console.WriteLine("Press any key to invoke GC");
Console.ReadKey();
n2 = n1;
n1 = null;
GC.Collect();
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
我想看看托管堆的状态.我做了以下步骤:
.load MicrosoftNet\Framework\v4.0.30319\sos.dll!eeheap -gc但在最后一个命令中我得到以下消息:
无法找到运行时DLL(clr.dll),0x80004005扩展命令需要clr.dll才能执行某些操作.
为什么命令!eeheap -gc失败?
如果它会帮助它是lm命令的结果:
0:000> lm
start …Run Code Online (Sandbox Code Playgroud) 我在下面提到了名为"Employee"的属性类.
public class Employee
{
public int EmpID { get; set; }
public int DeptId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我们都知道"int"数据类型将存储在堆栈中,而Object类型将存储在堆中,如下面的snap所示.
这里我的问题是,当我要创建一个Employee类的对象时
Employee objEmployee = new Employee();
Run Code Online (Sandbox Code Playgroud)
如何进行内存分配?
任何文献或相关链接将不胜感激.
来自Array Covariance文章:
元素类型是引用类型的数组是协变的.[...]它被添加到CLR中,因为Java需要它,而CLR设计者希望能够支持类似Java的语言.
CLR支持数组协方差,但是如何在F#中使用这个方便的功能?
type Foo () = class end
type Bar () = inherit Foo ()
// must have type Foo []
let foo : Foo [] = Array.create 1 (Bar ())
// ^^^^^^ must not cast to Foo
// must throw ArrayTypeMismatchException
foo.[0] <- Foo ()
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我想在场景后面foo存储一个Bar数组,就像在CLR中实现一样.
我想要几个使用表达式树动态创建的例程。似乎使用它们的最简单方法是创建LambdaExpression然后调用LambdaExpression.
Compile()产生一个可调用的委托。
Compile()?TypeBuilder使用and创建一个新类型并包含所有例程作为该类型的静态方法是否更好MethodBuilder?欢迎任何建议!
我为我的项目编写了新代码,当我运行单元测试时,我注意到 dotnet 崩溃了。
但我不知道为什么。因此,我将一些代码移至控制台应用程序并运行它。然后我得到这个输出:
Stack overflow.
Repeat 24047 times:
--------------------------------
at [[ class and method names here ]]
--------------------------------
at [[ class and method names here ]]
Run Code Online (Sandbox Code Playgroud)
一段时间后,出现 StackOverflowException:The runtime refused to evaluate the expression at this time.之后,dotnet 再次崩溃。
就是这样。所以构建过程(编译)是成功的,但 CLR 似乎崩溃了?
这是我的错还是 DotNet 中的错误?
编辑:这是一些代码以及我的问题的解释。这是我网站上的递归错误: https: //dotnetfiddle.net/RD69Mk
虽然我的ASP.NET项目使用框架的3.5版本,但事件日志会将错误注册为来自框架的2.X版本,例如:
Event Type: Error
Event Source: ASP.NET 2.0.50727.0
Event Category: None
Event ID: 1334
Date: 2009-05-19
Time: 17:04:29
User: N/A
Computer: XXXXXXXXXX
Description:
An unhandled exception occurred and the process was terminated.
Application ID: /LM/W3SVC/234989001/Root
Process ID: 8912
Exception: System.Web.HttpException
Message: The remote host closed the connection. The error code is 0x80072746.
Run Code Online (Sandbox Code Playgroud) clr ×10
.net ×6
c# ×5
c ×2
asp.net ×1
c++ ×1
debugging ×1
delphi ×1
dll ×1
expression ×1
f# ×1
heap-memory ×1
pascal ×1
return-type ×1
sos ×1
sql ×1
sql-server ×1
stack ×1
windbg ×1
windows ×1