こんにちは、Unityエンジニアのオオバです。
自分が書いたC#コードはdllにコンパイルされる前に変換処理が入ります。
どのような形でDLLにされているのか気になると思いますので、MonoDevelopで確認してみます。

View
> Pads
> Solution
からSolutionパネルを開きます。 
Assembly-CSharp/References
フォルダを右クリック。Edit References...
を選択します。 
.Net Assembly
タブをクリックして、下部のBrowse
からdll選択ポップアップを表示させます。そしてLibrary/ScriptAssemblies/Assembly-CSharp.dll
を追加します。 
先ほど追加した
Assembly-CSharp
をダブルクリックしてAssembly Browserを開きます。 
自分が書いたクラスを選択すると、コンパイルの際変換されたコードが表示されます。
サンプルコード
Before.cs
// 展開前
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour {
void Start (){
var list = new List<int> (){ 1, 2, 3, 4 };
foreach (var o in list)
Debug.Log (o);
}
}
After.cs
// 展開後
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour {
void Start (){
var list = new List<int> (){ 1, 2, 3, 4 };
foreach (var o in list)
Debug.Log (o);
}
}
上記のように変換されます。
- 不要なusing削除
- アクセス修飾子の補完(ここでは
private
) - varが適正な型へ置き換えられる
- ブレース(括弧)の補完
- インデントがスペースからタブへ
サンプルコードではこのような処理をしてくれているようです。自分のコードがどのような変換をされているかを知ることで、コード最適化の材料になるかもしれません。
※プロダクトによっては表示されない処理が入っていることもあるため、あくまで自己責任でお願い致します。
追記
このようコメントを頂きました。ありがとうございます!!ツッコミありがたいです。
たしかにiOSプラットフォームへビルドする際は、設定次第ですがIL2CPPという技術で
C#
→ IL
→ C++
という変換をします。
C++コードに変換されているので、この時点でDLLは存在しません。
本記事の展開されたコードというのは、あくまでC#がDLLにコンパイルされた時の、Monoコンパイラによるコードの変換を確認するというのが趣旨なので、実際のDLLの中身ということになると思います。 こちらC#のままではなくIL
になってDLL化されるとのことです。matarilloさんありがとうございました。

この記事が気に入ったらフォローしよう
オススメ記事
参考サイト