小编Pee*_*rvm的帖子

为什么在C#中"int []是uint [] == true"

有人可以澄清一下C#is关键字.特别是这两个问题:

Q1)第5行; 为什么这会回归真实?

Q2)第7行; 为什么没有施放异常?

public void Test()
{
    object intArray = new int[] { -100, -200 };            

    if (intArray is uint[]) //why does this return true?
    {
        uint[] uintArray = (uint[])intArray; //why no class cast exception?

        for (int x = 0; x < uintArray.Length; x++)
        {
            Console.Out.WriteLine(uintArray[x]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

MSDN的描述并未澄清情况.它声明is如果满足其中任何一个条件,它将返回true.(http://msdn.microsoft.com/en-us/library/scekt9xw(VS.71).aspx>MDSN文章)

expression is not null.
expression can be cast to type.

我不相信你可以对int []进行有效的转换为uint [].因为:

A)此代码无法编译:

int[] signed = new int[] { -100 };
uint[] unsigned …
Run Code Online (Sandbox Code Playgroud)

c# arrays unsigned casting

34
推荐指数
1
解决办法
4334
查看次数

更改AssemblyBuilder ImageRuntimeVersion

是否可以动态创建一个程序集,该程序集针对当前AppDomain的不同运行时.

例如,在.NET 4.0应用程序中,我想创建一个以.NET 2.0为目标的新程序集.

AssemblyBuilder builder = Thread.GetDomain().DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);
var version = builder.ImageRuntimeVersion; //"v4.0.30319"
Run Code Online (Sandbox Code Playgroud)

.net c#

6
推荐指数
1
解决办法
959
查看次数

在.NET 4.0过程中创建.NET 2.0 AppDomain

我需要在.NET 4.0进程中动态创建.NET 2.0兼容程序集.目前通过以下方式实现:

AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly(...)
ModuleBuilder  mb = assemblyBuilder.DefineDynamicModule(...);
Run Code Online (Sandbox Code Playgroud)

但不幸的是,所有dll的产生都是.NET 4.0(继承自我的4.0进程),这与我的其他.NET 2.0进程无关.

知道2个不同的CLR版本的AppDomain如何在同一个进程中共存?

.net c# clr appdomain

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

标签 统计

c# ×3

.net ×2

appdomain ×1

arrays ×1

casting ×1

clr ×1

unsigned ×1