小编Tam*_*chi的帖子

动态操作员解析

我有一个泛型方法,通过将一个操作数强制转换来调用运算符dynamic.有两种不同的电话:

//array is T[][]
//T is MyClass
array[row][column] != default(T) as dynamic
Run Code Online (Sandbox Code Playgroud)

这是工作和调用static bool operator !=(MyClass a, MyClass b)(即使双方都是null).

让我感到惊讶的是以下行的行为:

//array, a and b are T[][]
//T is MyClass
array[row][column] += a[line][i] * (b[i][column] as dynamic);
Run Code Online (Sandbox Code Playgroud)

这个电话
public static MyClass operator *(MyClass a, object b)
public static MyClass operator +(MyClass a, object b)

而不是
public static MyClass operator *(MyClass a, MyClass b)
public static MyClass operator +(MyClass a, MyClass b).

删除 …

c# dynamic .net-4.5

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

通过引用将字段传递给非托管代码是否安全?

通过引用将字段传递给非托管的extern方法是否安全?

[StructLayout(LayoutKind.Sequential)]
struct SomeStruct
{
    public int SomeValue;
}

class SomeClass
{
    SomeStruct _someStruct;

    [DllImport("SomeLibrary.dll")]
    static extern void SomeExternMethod(ref SomeStruct someStruct);

    public void SomeMethod()
    {
        // Is this safe or do I have to pin the current instance of SomeClass?
        SomeExternMethod(ref _someStruct);
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# pinvoke

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

标签 统计

c# ×2

.net ×1

.net-4.5 ×1

dynamic ×1

pinvoke ×1