どもです。
連続と言う事は名乗らないでも大丈夫ですよね?
でも名乗りますたくあんです。
前回のアライメントについてですが、さっそく読んでもらえてたみたいですね。
嬉しいです。コメントも返しておいたので興味ある人はみてくださいっす。
じゃあ今日は・・・・・
C#の便利機能。ジェネリックスについて書きます。
あっそういえば、以前友人にC++とC#何がちがうん?
と聞かれたのでついでに書いときます。
[0回]
まず違いについて軽く書いておきます。C#を使う上で知っておくべき事です。
C/C++はアンマネージコード、C#はマネージコードと言われます。
アンマネージコードとはMicrosoft.NET Framework以前の言語で共通言語ランタイム(CLR)に準拠しないコードです。
ですので、.NET Framework以前のCOM コンポーネント、ActiveX インターフェイス、Win32 API 関数がそれに当たります。
で、それとは逆の言語をマネージコードと言います。
VBもそうですね。VB.NETとか言うらしい。
それからC++をマネージコードに対応させたC++/CLI言語とかもあります。
大体こんな感じです、大丈夫ですか?
ココを掘り下げると大変そうなので割愛しますが、以前私がDLLのインポートで苦労したと書きましたがそれもこの辺が大きい原因です。
さて本題です。
ジェネリックスは一般にテンプレートと言われます。
そうです仮定の型を作って動的に設定できる(説明適当w)あれです。
テンプレートは授業やGesのセミナーでやった気がするのでまぁいいでしょう。
皆さんが知っている前提で書いていきます。
ジェネリックは微妙にC++のテンプレートと違うらしいです(よくわかりませんが)。
MSDNの説明を読むと、.NET Framework に型パラメータという概念を導入しますと書いてあります。
つまりさまざまな型に対応するために、型をパラメータとして与えて、その型に対応したクラスや関数を生成するもの機能と言う事です。
とりあえず、プログラムを見て行きます。
MSDNサンプルコピペしました。
// ↓これがジェネリッククラス
public class GenericList<T>
{
void Add(T input) { }
}
class TestGenericList
{
private class ExampleClass { }
static void Main()
{
// まずint型のGenericListクラス
GenericList<int> list1 = new GenericList<int>();
// 次にstring型のGenericListクラス
GenericList<string> list2 = new GenericList<string>();
// 最後にExampleClass型のGenericListクラス
GenericList<ExampleClass> list3 = new GenericList<ExampleClass>();
}
}
と言う感じでいきなりジェネッククラスのサンプルにしましたが、たぶんC++のテンプレートを使用してる人なら判ったと思います。
ジェネリッククラスはそのままでは型でなく設計図の状態なので、型のパラメータを与えてやる事で使用できるという事です。
正直今回はあんまり書く事ないです。MSDNのサンプルを持ってきた通りだいたい読めばわかりますので、
http://msdn.microsoft.com/ja-jp/library/512aeb7t(v=VS.80).aspx
一応リンクを張っときますので、暇なら読んでみて下さい。
以上!!
全然関係ないですが先日(と言っても結構前)にスクエニのカンファレンスに行った方のメモ?みたいなものを見せて頂いたんですが。いろいろ気になる事が書いていたので紹介。(今更な情報含む)
やっぱり現在開発中のゲームエンジンLuminous stadio(ルミナススタジオ)の事がメインで、これからはフォトリアルだ! みたいな事とかDirectX11のテッセレーションだっけ? それをいかにうまく使うかとかそんな事が書いてありました。
なんでもこのLuminous stadioですが既にヴェルサスのライティング?に使われているとか(ファミ通情報)私もLuminous stadioのデモとか見ましたけどかなりヤバいですね。
ゲーマーとしてもゲームプログラマとしても興味深いですね。
あとDirectX11ですが4GAMERに面白い記事があったので乗っけときます。
http://www.4gamer.net/games/092/G009273/20110928066/
crysis2をDirectX11に対応させるパッチの記事ですが色々書いてるので絶対読んでて下さい。
今回詰め込みすぎたかなw
だが反省はしないっ!
PR
COMMENT
無題
ここ見るとわかり易いかも。
++C++;// 未確認飛行 C にある C# によるプログラミング入門 の
ジェネリックスの説明の中の C++ や Java の template/generics との違いってところ。
まぁ、C++のは型ごとに展開されるからサイズが大きくなるけど、
TMP( Template Meta Programing )とかができるよね。
ちなみに以前、某S崎さん曰くC++/CLIはゲテモノソースって言ってた。
無題
あと間違いがあっら指摘してくれ、いろいろ心配なんで・・・