Bereich[] anstelle von get_Range()
http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.get_range.aspx es sagt Verwendung der Range-Eigenschaft anstelle von get_Range ("Objekt" Cell1, Objekt Cell2).
Sind Sie beide das gleiche tun, Ruft eine Microsoft.Office.Interop.Excel.Range-Objekt stellt eine Zelle oder einen Bereich von Zellen. Also, was ist der Unterschied, außer, dass dies ist eine Methode und die andere ist eine Eigenschaft? Warum sind Sie zeigt auf der Einsatz-Bereich[], was ist der Grund dafür?
- Vielleicht, weil er nicht respektiert, C# naming convention...
- ist es wirklich da, oder ist es nur deine eigene Meinung? wenn Sie können einfach zu aufwendig, dass Ursache ich bin wirklich interessiert in diesem. als Sie
- Auf den zweiten Gedanken, get_PROPERTYNAME ist der Weg von C# - Griffe Eigenschaften unter der Haube (im Grunde Eigenschaften umgewandelt werden get-und set-Methoden, mit der die syntax). In der Regel sind Sie nicht verfügbar, die zur compile-Zeit, und Sie müssen rufen Sie die Eigenschaft in der üblichen Weise, aber in diesem Fall (aus irgendeinem Grund) es ist verfügbar. So schlagen Sie vor, um die Verwendung der syntax der Eigenschaft der Ursache ist korrekt (aber ich denke, Sie sind genau die gleichen).
- +1 für die schöne Frage, machte mir bestätigen paar Dinge.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Range() schneller ist als Bereich[]
Durch die Praxis wir haben bemerkt, dass es der Fall ist. Aber hier sollte festgelegt werden, ein Grund, das so zu sagen.
Diese Tastenkombination ist praktisch, wenn Sie wollen, beziehen sich auf einen absoluten Bereich. Es ist jedoch nicht so flexibel wie die Rangeproperty, da es nicht in den Griff variable Eingabe als String oder Objekt-Referenzen. So am Ende des Tages werden Sie noch am Ende bezieht sich die lange Weg. Obwohl die shorty bietet eine gute Lesbarkeit. Daher könnte genauso gut es richtig machen die erste Runde, ohne mehr Ressourcen zu verbringen.
Nun, warum ist es so langsam? In der Zusammenstellung.
"Während der run-time-Excel verwendet immer die konventionelle notation (oder so wurde mir gesagt), also wenn der code kompiliert wird, alle Verweise in der shortcut-notation konvertiert werden müssen, zu konventionellen range-form (oder so wurde mir gesagt). {ie [A150] konvertiert werden müssen Range("A150") bilden}. Was auch immer die Wahrheit von dem, was ich habe gesagt, Visual Basic merken sowohl seine kompilierte version des Codes und was auch immer notation, die Sie verwendet, um Ihren code schreiben (also was auch immer in den code-Modul), die Eigenschaften der Arbeitsmappe, die für die Größe der Datei (der Arbeitsspeicher) so geht das leicht. "
Als Sie sehen, meine Antwort war mehr im Einklang mit VBA. Doch nach einiger recherche ist es irgendwie bewiesen, dass VBA-Seite nicht viel langsamer. So brauchen Sie nur zur Pflege der C# - Seite. @Hans gibt Ihnen eine bessere Antwort in C# Perspektive. Hoffe, dass die Kombination beider, dass Sie eine große Leistung code 🙂
Hier einige finden, die Leistung im Bereich[] vs-Bereich() in Excel
Range[]
Verwendung mehr 🙂 Aber ich persönlich haftenRange()
😉Wenn Sie C# - version 4 und dann können Sie den Bereich von indexer. Aber Sie haben zu verwenden get_Range (), die auf früheren Versionen.
Tun, beachten Sie, dass es etwas besonderes über Sie, die default-Eigenschaft einer COM-Schnittstelle Karten auf den indexer. Aber die Range-Eigenschaft ist nicht die default-Eigenschaft eines Worksheet, es ist nur eine ganz normale Eigenschaft. Problem dabei ist, dass C# nicht erlaubt deklarieren indiziert anderen Eigenschaften als die der indexer. Arbeitet in VB.NET nicht in C#, mussten Sie rufen Sie die Eigenschaft getter-Methode direkt. Durch populäre Nachfrage, das C# - team fiel diese Einschränkung in der version 4 (VS2010). Aber nur auf COM-Schnittstellen, die Sie noch nicht erklären indizierte Eigenschaften in Ihrem eigenen code.
Ich habe beide und beide kehrten die gleichen Ergebnisse. Ich denke die Reihe[] nutzt eigentlich get_Range() intern.
Für eine Frage der Namensgebung, die ich nur verwenden Bereich [], jetzt.