C# 在一行中将 KeyValue 设置为变量
C# set KeyValue to variables in one line
有没有前三行代码的简版:
foreach (var el in craftSystem.requiredItems)
{
var type = el.Key;
var count = el.Value;
var itemDefinition = ItemManager.GetItemDefinition(type);
var go = Instantiate(prefab, root);
var line = go.GetComponent<UICraftItemRequirementLine>();
line.SetItem(itemDefinition, count);
}
设置合适的变量名称,如类型,上面示例中的计数。
我知道代码看起来很好,可读性强,而且可以更简单,因为我只使用了一次变量。但我需要知道如何将它放在一行中(参见答案)。
你可以这样写:
var go = Instantiate(prefab, root);
var line = go.GetComponent<UICraftItemRequirementLine>();
line.SetItem(ItemManager.GetItemDefinition(el.Key), el.Value);
但调试起来会更困难(请参阅上面@Corak 的评论)
你的代码看起来很简单,但是为了你的问题你可以解构键值对
foreach ((var type, count) in requiredItems.Select(pair => (pair.Key, pair.Value)))
{
var itemDefinition = ItemManager.GetItemDefinition(type);
var go = Instantiate(prefab, root);
var line = go.GetComponent<UICraftItemRequirementLine>();
line.SetItem(itemDefinition, count);
}
或者您可以像这样重新格式化:
craftSystem.requiredItems.ToList().ForEach(el =>
{
var itemDefinition = ItemManager.GetItemDefinition(el.Key);
var go = Instantiate(prefab, root);
var line = go.GetComponent<UICraftItemRequirementLine>();
line.SetItem(itemDefinition, el.Value);
});
您可以像这样改进这个问题:
dataList.requiredData.ToList().ForEach(x =>
{
var item = ItemManager.GetItemDefinition(x.Key);
var instance = Instantiate(prefab, root);
var line = go.GetComponent<UICraftItemRequirementLine>();
line.SetItem(itemDefinition, x.Value);
});
在 C# 中,我们有类似 ForEach()
的扩展方法,它的工作方式与 foreach() 相同,但带有 lambda 表达式。
祝你好运。
有没有前三行代码的简版:
foreach (var el in craftSystem.requiredItems)
{
var type = el.Key;
var count = el.Value;
var itemDefinition = ItemManager.GetItemDefinition(type);
var go = Instantiate(prefab, root);
var line = go.GetComponent<UICraftItemRequirementLine>();
line.SetItem(itemDefinition, count);
}
设置合适的变量名称,如类型,上面示例中的计数。
我知道代码看起来很好,可读性强,而且可以更简单,因为我只使用了一次变量。但我需要知道如何将它放在一行中(参见答案)。
你可以这样写:
var go = Instantiate(prefab, root);
var line = go.GetComponent<UICraftItemRequirementLine>();
line.SetItem(ItemManager.GetItemDefinition(el.Key), el.Value);
但调试起来会更困难(请参阅上面@Corak 的评论)
你的代码看起来很简单,但是为了你的问题你可以解构键值对
foreach ((var type, count) in requiredItems.Select(pair => (pair.Key, pair.Value)))
{
var itemDefinition = ItemManager.GetItemDefinition(type);
var go = Instantiate(prefab, root);
var line = go.GetComponent<UICraftItemRequirementLine>();
line.SetItem(itemDefinition, count);
}
或者您可以像这样重新格式化:
craftSystem.requiredItems.ToList().ForEach(el =>
{
var itemDefinition = ItemManager.GetItemDefinition(el.Key);
var go = Instantiate(prefab, root);
var line = go.GetComponent<UICraftItemRequirementLine>();
line.SetItem(itemDefinition, el.Value);
});
您可以像这样改进这个问题:
dataList.requiredData.ToList().ForEach(x =>
{
var item = ItemManager.GetItemDefinition(x.Key);
var instance = Instantiate(prefab, root);
var line = go.GetComponent<UICraftItemRequirementLine>();
line.SetItem(itemDefinition, x.Value);
});
在 C# 中,我们有类似 ForEach()
的扩展方法,它的工作方式与 foreach() 相同,但带有 lambda 表达式。
祝你好运。