この場合、互換性のある参照型間の変換がコンパイルされる理由 (Excel 2010、.Net 4.5)
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application excelApplication = null;
excelApplication = new Excel.Application();
Excel.Worksheet worksheet = workbook.Worksheets[1] as Excel.Worksheet;
以下の場合はそうではありませんが、そのように示されている例を見ました:
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
この場合、次のコンパイル エラーが発生します。
> CSC : error CS0518: Predefined type 'Microsoft.CSharp.RuntimeBinder.Binder' is not
defined or imported
> error CS1969: One or more types required to compile a dynamic expression cannot be
found. Are you missing a reference?
一番、
編集:以下の両方の回答者のおかげで、次の説明は合理的に聞こえます:
.Net バージョン >= 4.0 のプロジェクトのプロジェクト リファレンスに Microsoft.CSharp を含めないと、動的言語ランタイム (DLR) と C# の間の相互運用をサポートできません。つまり、動的キャストはできません。