2012-10-09 56 views
1

我有一個C#類,它的所有成員都是object類型。類的所有成員都是對象類型

什麼是風險和警告?它會佔用更多資源嗎?

C#中object和Object有什麼區別?

+0

[object'和'Object']沒有區別](http://stackoverflow.com/questions/1017282/c-difference-between-system-object-and-object)。除此之外,儘可能避免使用'object'並使用強類型(f.e.a'int','string','Foo',...)。 –

+0

他們甚至編譯到完全相同的東西。他們只是一個別名。同樣的東西,如'System.Double'和'double','System.Int32'和'int'等... –

回答

1

objectObject之間沒有區別。 object只是C#的一個內置關鍵字,代表Object(或者更確切地說System.Object),就像int代表System.Int32一樣。

爲什麼你的所有屬性都是object型?它不需要更多的資源(除了類型檢查和類型轉換),但肯定存在風險,因爲在編譯時你不知道你正在使用哪些類型。你需要檢查類型並且一直投射。如果您使用更多特定的類型,編譯器會負責爲您檢查。您確定您的物業沒有更適合的類型嗎?例如int,string或其他?

0

對象類型的成員只是對其他內容的引用。這意味着你有一堆引用必須轉換爲實際類型才能用於任何事情,這也意味着你必須跟蹤他們的實際類型。如果可能,您應該將類​​型更改爲您想要存儲的實際類型。

對象引用本身不會使用比其他任何引用類型更多或更少的資源,但由於每次使用它時都必須進行轉換,因此需要更多代碼才能處理數據。

C#中的關鍵字object是框架中System.Object類的別名。

+0

我正在使用組件的Devexpress和EditValue屬性是對象類型。它們也可以爲null ,我將這些值作爲參數發送給存儲過程,因此我想使用對象類型。 –

0

唯一的問題是,您將不得不將對象轉換爲真實類型以便操縱它們。如果您知道您將使用字符串或int,則最好使用string或int而不是object。此外,這將使代碼在將來易於閱讀。對象太泛型,不會告訴你任何事情。

相關問題