【发布时间】:2016-03-19 20:00:56
【问题描述】:
我有一个 C# 类,我需要用它来实例化数百万个对象。因此,我需要使课程重量轻且速度超快。我在其中声明了一些函数。所以我担心的是,声明所有这些函数会使类变慢或消耗更多内存。我还可以选择将这些函数声明到另一个类中。这是课程:
internal class Var
{
public dynamic data;
public int index;
public VarTypes type;
public bool doClone = false;
public Var Clone(bool doClone)
{
var tmpVar = Clone();
tmpVar.doClone = doClone;
return tmpVar;
}
public Var Clone()
{
if (doClone)
return new Var() { data = data, index = index, type = type };
else
return this;
}
public void Clone(Var old)
{
this.data = old.data;
this.index = old.index;
this.type = old.type;
}
public override string ToString()
{
if (type == VarTypes.Function)
{
StringBuilder builder = new StringBuilder("function ");
if (data.Count == 4)
builder.Append(data[3].ToString());
builder.Append("(");
for (int i = 1; i < data[1][1].Count; i++)
builder.Append(data[1][1][i].ToString() + ",");
if (builder[builder.Length - 1] == ',')
builder.Remove(builder.Length - 1, 1);
builder.Append(")");
return builder.ToString();
}
else
return data.ToString();
}
}
【问题讨论】:
-
如果这是工作代码,那么它在这里是题外话,应该在 Code Review Stack Exchange 中,人们批评并提出改进其他工作代码的建议。
-
我投票结束这个问题,因为它属于代码审查codereview.stackexchange.com
-
不,这不是工作代码。我正在编码中。突然间,这个问题让我印象深刻。
-
如果您需要速度,您应该使用值类型。大小将主要由字段决定,请参阅此 q:stackoverflow.com/questions/3694423/… 很多方法会增加程序集大小,但我认为它不会增加堆上的大小 - 如果我发现其他情况,我会在这里发回。
-
不,一个方法不能让一个类对象变重,每个对象只有一个。只有字段和自动属性可以。