我遇到了一個我當前的infastructure無法處理並且變得太長的程序變化:我不得不停止使用這樣的絕對代碼,並轉向面向對象。代表無法正常工作
重複問題:
List<string[]> logos = new List<string[]>();
string[] tempLogo = new string[2];
tempLogo[0] = "FRONT EMB";
tempLogo[1] = front_emb;
logos.Add(tempLogo);
tempLogo[0] = "back EMB";
tempLogo[1] = back_emb;
logos.Add(tempLogo);
變成了:
delegate string addLogo(string x); // Namespace area
public static void IntergrateLogo(string toAdd, string name) // Inside Class
{
string[] tempLogo = new string[2];
tempLogo[0] = name;
tempLogo[1] = toAdd;
logos.Add(tempLogo);
}
// Main method
addLogo adl = new addLogo(IntegrateLogo);
List<string[]> logos = new List<string[]>();
adl(front_emb,"FRONT EMB");
adl(back_emb,"BACK EMB");
問題:
1.名稱 '標誌' 不存在於當前上下文
2.否過載關於 'IntergrateLogo' 匹配委託 'addLogo'
3存在。嵌入式聲明不能是聲明或標記語句
問:
從我的,非常低的,在代表知識,他們應該「模仿」的主要方法的環境;因此,我的列表 - logos
,應該能夠在IntergrateLogo
方法中看到和使用。
那麼,當我無法得到這個工作時,理解就出現了。
我並不是要求在這裏修復,我只是想更好地理解代表,因爲無論我在哪裏搜索,它都表示它允許在方法中訪問上下文環境範圍,但顯然這不適用於此。
有沒有一種方法可以在IntergrateLogo
方法中使用委託可以看到logos
?
正確,1 ..logos在您調用主要方法的任何地方定義 - 它在該方法之外不可用。 2. IntergrateLogo對於AddLogo有不同的參數,所以沒有它不匹配,3 ...不確定這是從哪裏來的,但可能是上面的結果 – BugFinder
方法的簽名必須與你想要的代理相同用於調用該方法。 –