我当前项目中的一个数据结构要求我存储各种类型的列表(String,int,float等).我需要能够动态存储任意数量的列表,而不知道它们将是什么类型.
我尝试将每个列表存储为一个object,但是我遇到了一些问题,试图转换回适当的类型(它将所有内容都识别为a List<String>).
例如:
List<object> myLists = new List<object>();
public static void Main(string args[])
{
// Create some lists...
// Populate the lists...
// Add the lists to myLists...
for (int i = 0; i < myLists.Count; i++)
{
Console.WriteLine("{0} elements in list {1}", GetNumElements(i), i);
}
}
public int GetNumElements(int index)
{
object o = myLists[index];
if (o is List<int>)
return (o as List<int>).Count;
if (o is List<String>) // <-- Always true!?
return (o as List<String>).Count; …Run Code Online (Sandbox Code Playgroud) 我正在为WP7工作的XNA游戏支持多种语言.但是,在混淆过程中似乎发生了一些事情,这似乎导致语言总是被设置为英语(在这种情况下是默认语言),至少根据Resource类.
例如,每个资源包都包含以下定义:
RESOURCE_IDX -> #
Run Code Online (Sandbox Code Playgroud)
每个资源包都有不同的#.在未混淆的构建中,将根据设备的当前语言提取正确的索引.但是,一旦发生混淆,Resource即使设备设置为西班牙语,该类也会自动选择与英语关联的值.
是否有一个我在混淆过程中缺少的设置导致了这个?
我已经阅读了许多关于使用BackgroundWorker对象来处理执行时间密集型任务的示例,这些任务生成用于填充DataGridView的结果.但是在我的情况下,似乎填充DataGridView的行为是花费最多的时间.我想知道这是否是因为我需要格式化结果(隐藏某些列,检查每行上的某些标志以设置颜色/字体等).
例:
DataTable results_table;
DataGridView my_grid;
DataView my_view;
private void fillTable()
{
// Generate the results
...
// Bind the data.
my_view.Table = results_table;
my_grid.DataSource = my_view
// Format the results
my_grid.Columns[0].Visible = false;
my_grid.Columns[1].Visible = false;
my_grid.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
my_grid.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
foreach (DataGridViewRow row in my_grid.Rows)
{
// Check for flags and format necessary rows.
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法,还是有其他方法来格式化结果而不必遍历每一行?