Ich habe eine Methode, die eine Helfermethode innerhalb einer für Schleife aufruft. Die Helfer -Methode enthält eine relativ teure Definition und Definition, die Reflexion beinhaltet (siehe unten). Ich frage mich, ob der Compiler auf die Methode Call inline und die Definition aus der Schleife herausgezeigt werden kann oder ob ich brauche, oder ob ich brauche, oder ob ich brauche Um die Methode neu zu gestalten, um sicherzustellen, dass die Definitionserklärung nicht mit jeder Iteration ausgeführt wird. < /p>
private class1[] BuildClass1ArrayFromTestData()
{
var class1Count = int.Parse(testContextInstance.DataRow["class1[]"].ToString());
var class1s = new List(class1Count);
for (var c = 0; c < class1Count; c++)
{
class1s.Add(BuildClass1FromTestData(string.Format("class1[{0}]", c)));
}
return class1s.ToArray();
}
private class1 BuildClass1FromTestData(string testContextName)
{
DataColumnCollection columns = testContextInstance.DataRow.Table.Columns;
var class1Fields = typeof(class1).GetFields();
var class1Object = new class1();
foreach (var field in class1Fields)
{
var objectContextName = string.Format("{0}.{1}", testContextName, field.Name);
if (!columns.Contains(objectContextName))
continue;
// Assume that all fields are of type "string" for simplicity
field.SetValue(
class1Object,
testContextInstance.DataRow[objectContextName].ToString()
);
}
return class1Object;
}
< /code>
Update: < /strong> < /p>
Hier ist die Alternative, die ich mir vorstellen kann, zur Klärung Zwecke: < /p>
private class1[] BuildClass1ArrayFromTestData()
{
var class1Count = int.Parse(testContextInstance.DataRow["class1[]"].ToString());
var class1s = new List(class1Count);
// Moved from BuildClass1FromTestData()
DataColumnCollection columns = testContextInstance.DataRow.Table.Columns;
var class1Fields = typeof(class1).GetFields();
for (var c = 0; c < class1Count; c++)
{
class1s.Add(BuildClass1FromTestData(string.Format("class1[{0}]", c)), columns, class1Fields);
}
return class1s.ToArray();
}
private class1 BuildClass1FromTestData(string testContextName, DataColumnCollection columns, FieldInfo[] class1Fields)
{
var class1Object = new class1();
foreach (var field in class1Fields)
{
var objectContextName = string.Format("{0}.{1}", testContextName, field.Name);
if (!columns.Contains(objectContextName))
continue;
// Assume that all fields are of type "string" for simplicity
field.SetValue(
class1Object,
testContextInstance.DataRow[objectContextName].ToString()
);
}
return class1Object;
}
Ich habe eine Methode, die eine Helfermethode innerhalb einer für Schleife aufruft. Die Helfer -Methode enthält eine relativ teure Definition und Definition, die Reflexion beinhaltet (siehe unten). Ich frage mich, ob der Compiler auf die Methode Call inline und die Definition aus der Schleife herausgezeigt werden kann oder ob ich brauche, oder ob ich brauche, oder ob ich brauche Um die Methode neu zu gestalten, um sicherzustellen, dass die Definitionserklärung nicht mit jeder Iteration ausgeführt wird. < /p>
[code]private class1[] BuildClass1ArrayFromTestData() { var class1Count = int.Parse(testContextInstance.DataRow["class1[]"].ToString()); var class1s = new List(class1Count);
for (var c = 0; c < class1Count; c++) { class1s.Add(BuildClass1FromTestData(string.Format("class1[{0}]", c))); }
foreach (var field in class1Fields) { var objectContextName = string.Format("{0}.{1}", testContextName, field.Name);
if (!columns.Contains(objectContextName)) continue;
// Assume that all fields are of type "string" for simplicity field.SetValue( class1Object, testContextInstance.DataRow[objectContextName].ToString() ); }
return class1Object; } < /code>
Update: < /strong> < /p>
Hier ist die Alternative, die ich mir vorstellen kann, zur Klärung Zwecke: < /p>
private class1[] BuildClass1ArrayFromTestData() { var class1Count = int.Parse(testContextInstance.DataRow["class1[]"].ToString()); var class1s = new List(class1Count);
// Moved from BuildClass1FromTestData() DataColumnCollection columns = testContextInstance.DataRow.Table.Columns; var class1Fields = typeof(class1).GetFields();
for (var c = 0; c < class1Count; c++) { class1s.Add(BuildClass1FromTestData(string.Format("class1[{0}]", c)), columns, class1Fields); }
return class1s.ToArray(); }
private class1 BuildClass1FromTestData(string testContextName, DataColumnCollection columns, FieldInfo[] class1Fields) { var class1Object = new class1();
foreach (var field in class1Fields) { var objectContextName = string.Format("{0}.{1}", testContextName, field.Name);
if (!columns.Contains(objectContextName)) continue;
// Assume that all fields are of type "string" for simplicity field.SetValue( class1Object, testContextInstance.DataRow[objectContextName].ToString() ); }
Wann werden Objekte in Python erstellt? Werden sie bei der Interpretation der Variablenerklärungslinie erstellt oder werden sie zu Beginn der Ausführung erstellt?
wurde mir gesagt, dass eine Weile effizienter als eine für Schleife ist. (C /C ++)
Dies schien vernünftig, aber ich wollte einen Weg finden, ihn zu beweisen oder zu widerlegen. Each containing...
Wenn Sie Visual Studio Enterprise 16.3.7 auf zwei separaten Computern verwenden, wird einer ordnungsgemäß erstellt und der andere Computer gibt den Fehler aus:
Es gibt ein Problem damit, dass das CSS nach der Erstellung des Projekts nicht angewendet wird. Lokal wird das CSS korrekt angezeigt, wenn npm run start verwendet wird. Beim lokalen Erstellen und...
Ich erhalte immer noch eine Warn -E -Mail von Apple, wenn ich meine .NET MAUI IOS -App in Bezug auf fehlende API -Deklarationen einreiche. Seine Build -Aktion ist Bundleresource. Ich habe die...