在C#中,泛型約束用于限制泛型類型參數的類型。通過使用泛型約束,可以確保泛型類型參數滿足特定的條件,以便在編譯時捕獲錯誤。
以下是一些常見的泛型約束及其用法:
public class MyClass<T> where T : class
{
// 只能接受引用類型作為T的參數
}
public class MyClass<T> where T : struct
{
// 只能接受值類型作為T的參數
}
public class MyClass<T> where T : new()
{
public T CreateInstance()
{
return new T(); // 必須具有無參數的構造函數
}
}
public interface IFoo
{
void DoSomething();
}
public class MyClass<T> where T : IFoo
{
public void DoSomethingWithT(T obj)
{
obj.DoSomething(); // T必須實現IFoo接口
}
}
public class BaseClass
{
// 基類
}
public class DerivedClass : BaseClass
{
// 派生類
}
public class MyClass<T> where T : BaseClass
{
// T必須是BaseClass或其派生類
}
通過正確使用泛型約束,可以提高代碼的類型安全性和可讀性,并減少在運行時出現錯誤的幾率。