小编Rya*_*own的帖子

.NET生成泛型方法 - 紧凑框架

以下是我正在寻找生成泛型委托的方法的原始问题: .Net生成泛型方法

以下是在.NET 3.5中生成通用委托的代码:

public delegate void PropertyChangedDelegate<OwnerType, PropertyType>(OwnerType sender, String propertyName, PropertyType oldValue, PropertyType newValue);

EventInfo eventInfo = type.GetEvent(property.Name + "Changed");
MethodInfo propertyChangedMethodInfo = this.GetType().GetMethod("content_PropertyChanged", BindingFlags.NonPublic | BindingFlags.Instance);
MethodInfo genericPropertyChangedMethodInfo = propertyChangedMethodInfo.MakeGenericMethod(eventInfo.EventHandlerType.GetGenericArguments());
Delegate delegate_ = Delegate.CreateDelegate(eventInfo.EventHandlerType, genericPropertyChangedMethodInfo);
eventInfo.AddEventHandler(obj, delegate_);

void content_PropertyChanged<OwnerType, PropertyType>(OwnerType sender, String propertyName, PropertyType oldValue, PropertyType newValue)
{
}
Run Code Online (Sandbox Code Playgroud)

这适用于.NET 3.5,但现在当我尝试移植到紧凑框架3.5时,Delegate.CreateDelegate方法需要第三个参数...参数说明说:

它应该是第一个参数,或者"委托绑定的对象".

我尝试将'obj'放在那里,'this'和null,我总是得到一个无效的参数异常.

有任何想法吗?

.net c# generics

9
推荐指数
1
解决办法
775
查看次数

x86/x64添加位移寻址

我正在为x86/x64 CPU指令编写一个编译器,我似乎无法弄清楚'displa'地址的含义.例如,Add指令详述如下:http: //www.c-jump.com/CIS77/CPU/x86/X77_0150_encoding_add_edx_displacement.htm

我只是尝试实现add指令,其中寄存器被添加到正常的内存地址.问题是,地址是"位移地址".这是否意味着地址是一个有符号的值,它是指令位置的偏移量?

64-bit x86 assembly

8
推荐指数
1
解决办法
8032
查看次数

IEEE浮点数与自定义浮点数性能

我正在处理没有浮点单元的处理器,所以我必须为用户界面使用固定或自定义浮点类型.

对于这三种类型,表示乘法的表现如何:
1.IEEE Float(32)
2.自定义32位浮点类,带有16位有符号值和带符号的16位指数
3. 32位固定小数

我想要一些可扩展到具有浮点单元的处理器的东西,自定义浮点数是否具有IEEE浮点数的竞争性能?我听说IEEE浮点数在没有FPU的处理器上的性能很糟糕,是因为由于24位值不是原生的,它必须做疯狂和/或?也就是说,自定义浮点类会缓解性能问题吗?

任何帮助将不胜感激!

c++ floating-point fixed-point

7
推荐指数
1
解决办法
1207
查看次数

为Windows窗体实现TypeConverter

我想为自定义类型厚度实现TypeConverter.我查看了像SizeConverter这样的微软发布的类型转换器.

当我在Thickness属性上键入字符串或更改其中一个属性时,设计器使用它,它只是不将更改保存到'Designer.cs'.它必须是从'Thickness'类型到'InstanceDescriptor'的转换,但我发现我的代码没有任何问题......

这是Thickness:

[TypeConverter(typeof(ThicknessConverter))]
public struct Thickness
{
    Double top;
    Double bottom;
    Double right;
    Double left;

    public Thickness(Double uniformLength)
    {
        top = uniformLength;
        bottom = uniformLength;
        right = uniformLength;
        left = uniformLength;
    }

    public Thickness(Double left, Double top, Double right, Double bottom)
    {
        this.left = left;
        this.top = top;
        this.right = right;
        this.bottom = bottom;
    }
    public Double Top
    {
        get { return top; }
        set { top = value; }
    }
    public Double …
Run Code Online (Sandbox Code Playgroud)

c# winforms

5
推荐指数
1
解决办法
1090
查看次数

MOVUPD 与 MOVDQU(x86/x64 组件)

这些指令有什么区别?MOVDQU 是未对齐的双四字移动,MOVUPD 是未对齐的两个 64 位浮点移动。我的意思是他们都只是移动未对齐的 128 位数据。

MOVDQU 位于第 948 页,MOVUPD 位于 intel x64 手册的第 995 页。

64-bit x86 assembly

5
推荐指数
1
解决办法
3662
查看次数

MOVZX缺少32位寄存器到64位寄存器

这是复制(转换)未签名寄存器的指令:http : //www.felixcloutier.com/x86/MOVZX.html

基本上,该指令具有8-> 16、8-> 32、8-> 64、16-> 32和16-> 64。

32-> 64转换在哪里?我需要为此使用签名版本吗?
如果是这样,如何将全64位用于无符号整数?

assembly x86-64 instruction-set

4
推荐指数
1
解决办法
1469
查看次数

在 x86-64 中编码 JMP FAR 和 CALL FAR

我熟悉 r/m8、r/m16、imm16 等,但如何编码 m16:16、m16:32 和 m16:64?这些在 JMP 和 CALL 指令中......

m16:16 是地址位置吗?或者它就像一个直接地址?任何帮助将不胜感激!

assembly x86-64 machine-code instruction-encoding

3
推荐指数
1
解决办法
6509
查看次数

C#接口转换...字典查找?

每次将Object转换为接口时C#都会进行字典查找吗?我认为这是必须的.

可以实现数百个接口的通用对象 - > GetType() - >按名称获取接口(或数字ID,不会在可预测的位置) - >从数组中获取方法指针并保存到转换对象

c#

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

C++临时和构造函数

为什么有些编译器抱怨从构造函数中获取临时地址而有些不?

例如:

WriteLine(&String8("Exception"));
Run Code Online (Sandbox Code Playgroud)

我假设抱怨编译器没有将该地址存储在堆栈中,如果我忽略该警告,它将会爆炸.有没有办法让它在一条线上工作?是返回地址的类的静态方法的最佳/唯一方法吗?嗯我不认为String8类上返回指针的静态方法会起作用,因为它会将String8类保存到寄存器然后在WriteLine()中使用它

c++

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

C++ stringstream

执行此操作时,stringstream如何工作:

stringstream ss;
ss << "123" << "abc";
Run Code Online (Sandbox Code Playgroud)

它是否会创建一个一次性"123abc"字符串,或者它是否会连续执行两个字符串流操作?

我想复制那个功能,但没有重载我似乎使用两个参数,如上面的代码...

c++ string stringstream

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