我遇到了一个程序的变化,我目前的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
方法中被查看和使用。
好吧,当我无法正常工作时,这种理解就消失了。
我不是在这里要求修复,我只是希望与代表更好地理解,因为在我搜索的任何地方,它都说它允许在方法中访问上下文环境范围但显然在这里不起作用。
是否可以通过使用委托在logos
方法中看到IntergrateLogo
?
答案 0 :(得分:3)
是否可以通过使用委托在IntergrateLogo方法中看到徽标?
当它是一个局部变量时,不是。
但是为什么你根本不使用代表这一点并不是很清楚。我甚至不会使用某种方法,而是写下:
List<string[]> logos = new List<string[]>
{
// TODO: Rename front_emb and back_emb to follow .NET naming conventions
new[] { front_emb, "FRONT EMB" },
new[] { back_emb, "BACK EMB" },
};
我还考虑创建一个Logo
类,而不是使用字符串数组,此时您将拥有:
List<Logo> logos = new List<Logo>
{
new Logo(front_emb, "FRONT EMB"),
new Logo(back_emb, "BACK EMB"),
}
看起来相当更整洁,IMO。