LoginSignup
3
5

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-10-03

おまじないを卒業しよう。
ということで、ごった煮な内容でお届けしたいと思います。
詳しい説明はリンク先頼みな内容になる予定。。。
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作るときは別の手段を取る。

3
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5