Tại sao tôi có thể làm điều này:Tại sao "như T" gặp lỗi nhưng truyền với (T) không nhận được lỗi?
public T GetMainContentItem<T>(string moduleKey, string itemKey)
{
return (T)GetMainContentItem(moduleKey, itemKey);
}
nhưng không này:
public T GetMainContentItem<T>(string moduleKey, string itemKey)
{
return GetMainContentItem(moduleKey, itemKey) as T;
}
Nó phàn nàn rằng tôi đã không bị hạn chế kiểu generic đủ, nhưng sau đó tôi sẽ nghĩ rằng quy tắc sẽ được áp dụng để đúc với "(T)" là tốt.
Câu trả lời của bạn không chính xác, bạn có thể truyền theo kiểu giá trị, kết quả sẽ không thể xem được, xem bài đăng này và câu trả lời của Jon Skeet: http://stackoverflow.com/questions/496096/casting-vs-using-the -as-keyword-in-the-clr – Mikhail