[英]Why is typeof needed?
我不時想到的東西:為什么在C#中需要typeof運算符? 編譯器是否知道public class Animal
只是一個類型的定義? 當我需要引用類型時,為什么需要指定SomeMethod(typeof(Animal))
?
Animal
只是類型的名稱, typeof(Animal
)返回實際的類型對象( System.Type
實例)。 當然,可能只是讓類型名稱在代碼中返回類型對象,但它使編譯器/解析器的工作更加困難(識別類型名稱何時表示typeof或其他) - 因此存在typeof
關鍵字。 它也可以使代碼更清晰。
typeof(Class)
是將Type表示為文字的唯一方法。 當你編寫Class.SomeField
你的意思是靜態字段。 當您編寫typeof(Class).SomeField
您引用類Type
的對象字段來表示您的類。
沒有typeof確實會引起歧義:
class foo
{
public static string ToString()
{
return "Static";
}
}
public class Program
{
private static void Main(string[] args)
{
Console.WriteLine(foo.ToString());
Console.WriteLine(typeof(foo).ToString());
}
}
foo
和typeof(foo)
並不是指同一個東西,並且強迫編譯器假裝它們是個壞主意,即使我們忽略了這種歧義。
對初學者的反思。 當您可以檢查類型本身時,可以獲得許多可能性,而不僅僅是必須知道它暴露的內容,或者根本不存在它。
typeof()允許我獲取Type對象的實例,而不必擁有目標對象的實例。 這反過來讓我在沒有實例的情況下詢問有關該類的問題。
那么,如果不使用typeofoperatore,如何在不實例化類的情況下獲取類的System.Type? 簡單,你不能:D
因為你只需要一個System.Type可以做很多反射,所以這個算子非常方便。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.