C# 通过对象将通用T转换为布尔?

C# 通过对象将通用T转换为布尔?,c#,generics,C#,Generics,为什么我需要先将泛型类型T强制转换为对象,然后才能将其强制转换为bool 我可以约束T以便直接将其强制转换为bool吗 e、 g 公共无效集(T值) { if(typeof(T)=typeof(bool)) { Manager.SetValue(ID,(bool)(object)值); } // ... } 因为T可以是任何类型,而不仅仅是bool。这就是泛型类型的用途。这并不能解释为什么我必须先将其强制转换为对象,然后才能将其强制转换为bool。我知道什么是泛型。问得好!Jon Skeet在另

为什么我需要先将泛型类型
T
强制转换为
对象
,然后才能将其强制转换为
bool

我可以约束
T
以便直接将其强制转换为
bool

e、 g

公共无效集(T值)
{
if(typeof(T)=typeof(bool))
{
Manager.SetValue(ID,(bool)(object)值);
}
// ...
}

因为
T
可以是任何
类型
,而不仅仅是
bool
。这就是泛型类型的用途。这并不能解释为什么我必须先将其强制转换为
对象
,然后才能将其强制转换为
bool
。我知道什么是泛型。问得好!Jon Skeet在另一个SO问题中回答了你的第一个问题,所以我将这一个标记为重复。至于你的第二个问题:不,据我所知,这样的限制是不可能的。@Heinzi google-d对于这个问题,有相当长一段时间了,想链接一下答案吗?Thx-inadvance@bas:只需点击问题顶部的链接,这是第一个(也被接受的)答案。因为
T
可以是任何
类型
,而不仅仅是
bool
。这就是泛型类型的用途。这并不能解释为什么我必须先将其强制转换为
对象
,然后才能将其强制转换为
bool
。我知道什么是泛型。问得好!Jon Skeet在另一个SO问题中回答了你的第一个问题,所以我将这一个标记为重复。至于你的第二个问题:不,据我所知,这样的限制是不可能的。@Heinzi google-d对于这个问题,有相当长一段时间了,想链接一下答案吗?Thx-inadvance@bas:只需点击问题顶部的链接,这是第一个(被接受的)答案。
    public void Set<T>(T value)
    {
        if (typeof (T) == typeof (bool))
        {
            Manager.SetValue(ID, (bool) (object) value);
        }
        // ...
    }