ufcpp / UfcppSample

http://ufcpp.net/ 向けのサンプル
Apache License 2.0
136 stars 39 forks source link

unmanaged type の定義変更 #240

Closed ufcpp closed 5 years ago

ufcpp commented 5 years ago

VS 16.1 Preview 1 からの対応。 ジェネックでも、型引数が unmanaged ならポインター化できるようになった。

KeyValuePair<int, float> p = default;

unsafe
{
    KeyValuePair<int, float>* pp = &p;
}

入れ子の unmanaged 制約も可能に

using System.Collections.Generic;

struct X<T>
    where T: unmanaged
{
    public T Value;
}

readonly struct Y
{
    public readonly int Value;
}

class Program
{
    static void Main()
    {
        X<int> ok;
        X<X<int>> willBeOk;
        X<(int, X<int>, KeyValuePair<int, float>)> xx = default;
    }
}
ufcpp commented 5 years ago

https://ufcpp.net/study/csharp/cheatsheet/ap_ver8/#unmanaged-generic-struct