我是新來的編碼,現在仍然在大學。對不起,如果這個問題以前已經問過,但我什麼地方都看不到它。是否有可能爲Arrays c#創建構造函數?
我在想,是否可以爲數組Class創建一個構造函數,所以每次創建一個新數組時,我都可以執行代碼,例如計算我的應用程序中每個實例的數量。我明白Array類是抽象的,所以你不能創建它的一個實例。
int []數組是否只是抽象Array類中的方法?
任何洞察力,爲什麼它是或不可能的將不勝感激!
感謝
我是新來的編碼,現在仍然在大學。對不起,如果這個問題以前已經問過,但我什麼地方都看不到它。是否有可能爲Arrays c#創建構造函數?
我在想,是否可以爲數組Class創建一個構造函數,所以每次創建一個新數組時,我都可以執行代碼,例如計算我的應用程序中每個實例的數量。我明白Array類是抽象的,所以你不能創建它的一個實例。
int []數組是否只是抽象Array類中的方法?
任何洞察力,爲什麼它是或不可能的將不勝感激!
感謝
如果您的自定義代碼只是爲了填充陣列,C#提供了一些內置的方法來做到這一點(見All possible C# array initialization syntaxes)。
如果您希望每次創建特定類型的對象的實例時都執行代碼,則應該創建一個表示該對象的類(您也可以執行擴展方法,但這可能很有可能隨着時間的推移變得混亂)。這個類可能是沒有什麼比一個包裝更圍繞陣列:
public class MyArray<T>
{
private T[] _array;
public MyArray()
{
// execute your always must run code here!
}
public ArrVal
{
get { return _array; }
set { _array = value; }
}
}
...
MyArray<int> myArray = new MyArray<int>(); // your custom code gets executed when you new up the object here
然而,每best practices,你應該避免在做太多的工作(在我的經驗構造有代碼,具有引發異常構造可能會導致一些難以調試的問題,儘管MSDN認爲拋出異常比掩蓋異常要好)。如果這段代碼要做大量工作,最好創建一個單獨的方法(可能是public void Initialize()
),以便調用者可以更懶惰地創建對象。
你也應該避免有這樣做所有陣列,因爲我可以保證它會導致問題爲您或其他人在路上時,他們想不通爲什麼int[] arr = new int[3]
是做額外的東西。你應該看看在這裏正確地使用封裝(即創建一個包裝器/擴展/裝飾器類)。
此外,集合的現有.NET類之一完全可以滿足您的需求......請仔細研究這些類。
我不知道如果我正確地理解你的問題,但如果你希望能夠當你創建一個數組,你可以使用LINQ執行代碼:
int[] myArray = new int[10]
.Select((x, idx) => /*execute your code here*/).ToArray();
所以,你可以創建數組長度爲10,那麼你可以爲每個元素執行代碼來確定你想要填充它。
例如,你可以使用填充隨機數字數組:
Random random = new Random();
int[] myRandomArray = new int[10]
.Select((x, idx) => random.Next()).ToArray();
你的問題有點過於含糊。 「所以每次我創建一個新的數組時,我都可以自動執行代碼?」 < - 你想如何填充數組?在一個循環?從另一個你已經擁有的館藏? –
請勿使用不相關的標籤。這是一個C#問題 - 它不應該有一個'java'標記。 –
你能舉一個你想要做什麼的例子,不管它有多麼錯誤?你是否想像'int []'和'float []'這樣的數組,或者像'MyObject []'這樣定義的新對象? –