読者です 読者をやめる 読者になる 読者になる

黙々とC#

"In a mad world of VBA, only the mad are sane" 『VBAという名の狂った世界で狂っているというのなら私の気は確かだ』


メソッド、クラスの宣言

Excel C# Script入門講座 要加筆修正

本記事は、Excel C# Script入門講座の1記事です。

メソッド、クラスの宣言

C# Scriptでは、メソッドの定義を直接書き始めることが可能です。

test();

void test(){
    var a1 = Excel.ActiveWorkbook.ActiveSheet.Range("A1")
    a1.Value = "C# Script Test";
}

クラスの定義もどこにかいても大丈夫です。

var d = new D();
d.method();

class D
{
   public void method()
   {
        var a1 = Excel.ActiveWorkbook.ActiveSheet.Range("A1")
        a1.Value = "C# Script Test";
   }  
}

C# Script環境では、クラスなどで囲まずに直接記載したコードは、Roslyn内部でコード生成された際に、 いい感じにスクリプト全体を囲うクラスが作られ実行されます。

拡張メソッドの宣言

拡張メソッドはクラスを宣言せずに、直接スクリプト中で宣言します。

using System;
 
static void ShowInA1(this string msg)
{
    var a1 = Excel.ActiveWorkbook.ActiveSheet.Range("A1")
    a1.Value = msg;
}
 
"Hello World".ShowInA1();

上述の通り、Roslyn内部でコード生成された際に、 スクリプト全体を囲うクラスが作られるため、クラスを宣言してしまうと入れ子状にクラスが宣言されてしまい、コンパイルエラーが発生します。