Help us understand the problem. What is going on with this article?

C言語とC#のおまじない卒業に向けて

More than 1 year has passed since last update.

おまじないを卒業しよう。
ということで、ごった煮な内容でお届けしたいと思います。
詳しい説明はリンク先頼みな内容になる予定。。。
Cを混ぜたのは早くも失敗した感がしている。

気が向いたら追記していきます。

なぜ「おまじない」のままではダメなのか

プログラミングの業界で「おまじない」というと、「よく分からないけど」とりあえず書いてみたといったニュアンスだと思います。

1文字間違えただけで致命的なバグになったりする世界で、「よく分からないけどみんな書いてるから」で書くのは恐ろしいことではないでしょうか?

基本を理解していないと、どこかでハマることになります。という事で、分からないままにするのはよろしくないと思うわけです。

Cにおける#include

実際はなにをやっているのか?
⇒ 参照先ファイル(通常はヘッダファイル)の内容をただ単純にコピーして展開するもの。#defineもただ置き換えるだけなので、そういうものだと思っておけばよいかと。
・参考サイト: https://monozukuri-c.com/langc-include/

C#におけるusing System;とか

名前空間を省略して書けるようにするもの。
例えばusing System;って書いておけば、System.IntPtrIntPtrと書いてもコンパイラが探して補完くれる。
・参考サイト: https://ufcpp.net/study/csharp/sp_namespace.html
・C#本家(英語): https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-directive

なお、上記は「usingディレクティブ」といい、
using(型名 変数名=xxx){処理}は「usingステートメント」といい、別モノです。

C#における[STAThread]属性

スレッドの管理がイケてないCOM機能や、間接的にそのCOM使っている.Netのクラスを使うときは[STAThread]つけてね
という感じ。
つけ忘れてハマるよりは、つけておくほうが無難。
(Single-Thread ApartmentとMulti-Thread Apartmentの概念が理解できておらず、おまじないレベルから脱却できてない・・・)
参考サイト: https://dobon.net/vb/dotnet/form/stathread.html

メイン関数

C,C#とも、コンパイラに、最初に開始する処理がどこにあるかを判断させるために、あらかじめ決められた関数名(メソッド名)を使っている。dll作るときは別の手段を取る。

kob58im
趣味でC#で色々試してます。 置いてるほとんどのC#サンプルコードは、Windows7以降デフォで入ってる環境でコンパイルできます。 最近はCodePen使ってJavaScriptも書いてます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away