所以我有一個我在C#應用程序中創建的類(myClass)。在處理這個類的數組時,我一直認爲不得不編寫一個循環來填充myClass對象的數組。我知道當你創建一個枚舉值數組時,該數組已經被設置爲默認值的枚舉實例填充。創建一個實例化的類對象數組
我想知道如果相同的排序功能,可以用一個類來實現讓喜歡打電話:
myClass[] myClassArray = new myClass[25];
將導致這對空構造只是實例myClass的對象的數組那個班。
所以我有一個我在C#應用程序中創建的類(myClass)。在處理這個類的數組時,我一直認爲不得不編寫一個循環來填充myClass對象的數組。我知道當你創建一個枚舉值數組時,該數組已經被設置爲默認值的枚舉實例填充。創建一個實例化的類對象數組
我想知道如果相同的排序功能,可以用一個類來實現讓喜歡打電話:
myClass[] myClassArray = new myClass[25];
將導致這對空構造只是實例myClass的對象的數組那個班。
試試這個:
MyClass[] myClassArray = Enumerable
.Range(0, 25)
.Select(i => new MyClass())
.ToArray();
這將創建類的25個實例,並把它們放到一個數組。
你還沒有宣佈一個循環,但循環仍在發生。 – Oded
@Oded絕對沒有辦法避免循環。但是你至少可以把它從你的視線之外。 – dasblinkenlight
爲什麼不直接在方法中封裝惱人的循環呢?
public T[] CreateInstances<T>(int arrayLength) where T: new()
{
T[] result = new T[arrayLength];
for (int i=0; i<arrayLength; i++)
result[i] = new T();
return result;
}
打敗我吧。我認爲這個方法應該是靜態的,但是它沒有返回結果;';) – Nuffin
的可能重複:http://stackoverflow.com/questions/583574/c-sharp-why-do-you-need-to-instantiate-each-array-element – Tudor
之所以所有領域你的數組將初始化爲null是類是引用類型。枚舉和原始值是值類型,因此可以使用默認值進行初始化。 –
不是重複的;這個問題是一個「如何」的問題,而另一個問題是關於語言行爲的「爲什麼」問題。 –