簡體   English   中英

函數C#中的引用

[英]Reference in functions C#

我從標題中知道您會說這是重復的,但是...

因此,我創建了自己的類,並在MainWindow類構造函數中創建了一些對象( Masina類):

public class MainWindow
{ // example
     private Masina[] _masina = new Masina[10];
     _masina[0].Load(1, 'x');   // works
     SomeFunction(_masina);
}

當我在Constructor中使用此類函數時,它可以正常工作,但是當我嘗試使用某些函數並傳遞此爭論時,如下所示:

public static void SomeFunction(Masina[] masina) 
    {
        for (int i = 0; i < 10; i++)
            try
            {
                masina[i].Load(i, 'x');
            }
            catch
            {
            }
    }

然后SomeFunction將此爭論視為未引用。 ref對我不起作用!

誰能幫我解決?

可能您想在構造函數中初始化Masina[]數組,如下所示:

public class MainWindow {
  // Declaraion is OK, calling method _masina[0].Load(1, 'x') - is not
  private Masina[] _masina = new Masina[10];

  // constructor is the place you're supposed to put complex initialization to
  public MainWindow() {
    // You can call the method in the constructor
    SomeFunction(_masina);
  }

  public static void SomeFunction(Masina[] masina) {
    // validate arguments in the public methods
    if (null == masina)
      throw new ArgumentNullException("masina");

    // do not use magic numbers (10), but actual parameters (masina.Length)
    for (int i = 0; i < masina.Length; ++i)
      masina[i].Load(i, 'x');

    // hiding all exceptions - catch {} - is very bad idea
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM