Невозможно использовать тип структуры в общем ограничении в C # - PullRequest
0 голосов
/ 02 мая 2018

Я играл с общими ограничениями, когда обнаружил проблему. Я не могу найти ответ на этот вопрос, за исключением подсказки об ошибках, которую он показывает во время компиляции.

struct MyStruct
{
    public void Get()
    {

    }
}

class MyClass
{
    public void Get()
    {

    }
}


public class Stable<T> where T : MyStruct // NOT Allowed
{

}

public class Stable<T> where T : MyClass //Allowed
{

}

public class Stable<T> where T : struct //Allowed
{

}

public class Stable<T> where T : class //Allowed
{

}

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Структуры по умолчанию запечатаны, поэтому здесь не следует использовать дженерики.

Использование:

public class StableStruct : Stable<MyStruct>
{
}
0 голосов
/ 02 мая 2018

A struct не может наследоваться от другого struct. Так что в вашем - не рабочем примере - T всегда должно быть MyStruct, что делает использование дженериков здесь довольно бесполезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...