#0. はじめに
Freeradicalの中の人、yamarahです。
Autodesk Inventor API Hacking (C#8.0、そして.NET Core3.0)の続きで、C#9.0は使えるのか、検証します。
#1. C# 9.0
##1.1 C#8.0 → C#9.0に切り替える
結論を言うと、C#9.0に出来ました。変更は簡単で、Projectの<LangVersion>
を書き換えるだけです。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net472</TargetFramework>
<RootNamespace>InvAddIn</RootNamespace>
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
(以下、続く)
これを、
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net472</TargetFramework>
<RootNamespace>InvAddIn</RootNamespace>
<LangVersion>9.0</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
(以下、続く)
とするだけです。
##1.2 何が変わるの?
大きくは変わりません。と言うのも、InventorのAddInを書く限りは.NET Frameworkを使い続ける必要があり、.NET Coreで有効になる多くの新機能が使えないのです。
数少ない.NET Frameworkでも使える新機能で有用なのは、オブジェクト初期化の簡略化です。以下のように書けるようになりました。
Dictionary<int, string> Table = new(); // 右辺を省略できる
// 今までは、こう書いていた。
//Dictionary<int, string> Table = new Dictionary<int, string>();
// もしくは、varが使える場面では、
//var Table = new Dictionary<int, string>();
また、些細ですが型によるswitchが出来るようになりました。
switch (sketchEntity)
{
// C#8.0では'種類のパターン'が使えないので、次のように書く必要があった。
// case SketchLine _:
case SketchLine:
message = "Line";
break;
// case SketchArc _:
case SketchArc:
message = "Arc";
break;
default:
break;
}
#99. 親の記事に戻る
Autodesk Inventor API Hacking (概略)