我是C#的新手,请原谅我,如果我问一个愚蠢的问题。
这是我的代码:
public class SpellsTemplate
{
public int id;
public string name;
public int type;
public float base_damage;
public int buff;
public float buff_debuff_time;
public int healing;
public float base_healing;
public int class_specific;
public float cooldown;
public float cast_time;
public string icon;
public string game_prefab;
public float flying_speed;
public int chain;
public float chain_distance;
public int chain_max_targets;
}
public class SpellsHandler
{
public List<SpellsTemplate> spellsTemplate = new List<SpellsTemplate>();
.......
some other stuff here....
.......
spellsTemplate.Add(new SpellsTemplate()
{
id = Convert.ToInt32(mysqlReader["id"]),
name = mysqlReader["name"].ToString(),
type = Convert.ToInt32(mysqlReader["type"]),
base_damage = (float)mysqlReader["base_damage"],
buff = Convert.ToInt32(mysqlReader["buff"]),
buff_debuff_time = (float)mysqlReader["buff_debuff_time"],
healing = Convert.ToInt32(mysqlReader["healing"]),
base_healing = (float)mysqlReader["base_healing"],
class_specific = Convert.ToInt32(mysqlReader["class_specific"]),
cooldown = (float)mysqlReader["cooldown"],
cast_time = (float)mysqlReader["cast_time"],
icon = mysqlReader["icon"].ToString(),
game_prefab = mysqlReader["game_prefab"].ToString(),
flying_speed = (float)mysqlReader["flying_speed"],
chain = Convert.ToInt32(mysqlReader["chain"]),
chain_distance = (float)mysqlReader["chain_distance"],
chain_max_targets = Convert.ToInt32(mysqlReader["chain_max_targets"])
});
}
有没有办法可以在班级的实例上设置ID? 像:
spellsTemplate.Add(new SpellsTemplate(Convert.ToInt32(mysqlReader["id"]))
然后将数据放入类变量。
另外,如果可以的话,我如何直接从所有其他实例中选择该实例而不用foreach?
有可能吗?
答案 0 :(得分:1)
在import pandas as pd
df = ...
df_total = pd.DataFrame(df.iloc[:, 1:].sum(), columns=["Total"]).T.reset_index()
df_total.columns = df.columns
df = pd.concat([df_total, df])
# Name y1 y2 y3
# 0 Total 12 14 15
# 1 Ben 1 2 3
# 2 Jane 4 5 6
# 3 Sarah 7 7 6
课程上写一个构造函数。这将强制任何实例化您的SpellsTemplate类的人提供某些值(例如ID)。
SpellsTemplate
构造函数是面向对象编程的真正重要部分 - 请read up on them:)
关于第二个问题:
另外,如果可以的话,我如何直接从所有其他实例中选择该实例而不用foreach?
如果您只想使代码更清晰,可以编写类似于以下内容的代码:
public class SpellsTemplate
{
public SpellsTemplate(int id)
{
this.Id = id;
}
// Make the setter for the ID property private, so it
// can only be set within this class (e.g. in the constructor).
public int Id { get; private set; }
// The rest of your properties go here.
}
然而,这是在幕后做的事情。
如果您真的关心性能,则需要使用类似哈希表或字典的数据类型。
答案 1 :(得分:1)
你也可以使用这样的词典:
Dictionary<int, object> spellsTemplate = new Dictionary<int, object>();
spellsTemplate.add(Convert.ToInt32(mysqlReader["id"]), yourObject);
要选择direclty,您可以:
spellsTemplate[id];