- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!C#のサンプルとかチュートリアルとか
永遠に工事中
!!移行する前に知っておいて欲しいC/C++の知識
!ポインタ(値渡しと参照渡しの区別がつく程度)
!とにかくクラス
:基本:C#では名前空間>クラス/列挙体など>変数/関数という構造にする必要があり、グローバル変数は使えず、関数も単体では存在できない。そのためクラスの習得は必至。とはいえ、定義/初期化/呼び出しだけ見ておけば当分は間に合う。
:慣れてきたら:継承/カプセル化/ポリモーフィズムなど、設計に関する話も見ておくとよい。いずれもオブジェクト思考の基礎。
:慣れてきたら:継承/カプセル化/ポリモーフィズムなど、設計に関する話も見ておくとよい。いずれもオブジェクト指向の基礎。
!基本的な書式の違い
配列の宣言が若干異なる点に注意。後ほとんど同じ。
*C
int list[5]; //サイズ固定
*C#
int[] list = new list[5]; //実体の生成時にサイズを設定
変数の宣言やステートメント(ifやswitch、forのようなもの)の書式はほぼ同じ。
他には、構造体/クラスメンバの参照に用いる演算子が統一されている。
*C++
//値の場合
Node node = new Node();
node.x = 5;
//ポインタの場合
Node* node = new Node();
node->x = 5;
//スコープを参照する場合
Network::Node node
*C#
//.,->,::の区別は必要ない
Node node = new Node();
node.x = 5;
!!フォームアプリケーションの基礎
:基本的な流れ:フォームアプリは基本的にフォームはデザイナ上でマウスでポチポチと概観を作り、計算部分はソースコードを直接編集する形を取る。デザイナで設置したコントロールの定義と初期化は〜.Designer内に記述される。
:基本的なコントロール:以下によく使うコントロールを示す。ついでに他の言語との名前の対比も示しておく(一部怪しいところは?付き)。
,C#,Java(Android),機能
,Label,TextView,文字列を表示する
,Button,Button,名前の通りボタン
,ComboBox,Spinner,クリックすると選択肢が表示されるボタン
,TextBox,TextEdit,テキストの表示と編集
,RichTextBox,TextEdit,複数行のテキスト編集
,PictureBox,View/SurfaceView,画像を描画するコントロール
,CheckBox,ToggleButton,クリックするとマーカーのON/OFFが切り替わるボタン
,ListBox,ListView,一列に文字や画像などを並べるコントロール
!サンプル1 フォームを表示
*[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication1.zip]
Program.cs
...
namespace WindowsApplication1
{
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// new Form1() がフォームの生成、描画ループを自分で管理したい場合は
// ここを書き換える
Application.Run(new Form1());
}
}
}
変数やイベントを自分で追加する場合は、Form1.csのpublic partial class Form1 : Formの中に書く。
!サンプル2 ボタンとテキスト
*[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication2_text_button.zip]
public partial class Form1 : Form
{
...
private void button1_Click(object sender, EventArgs e)
{
//Textに文字列を設定
textBox1.Text = "Click";
}
}
!サンプル3 四則演算を行うもの
*[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication3_calc.zip]
:コード中でコントロールを管理する:
*ライフサイクル
**コントロールの作成
**コントロールの初期化(パラメータ設定)
**コントロールの親の決定
**コントロールの子の決定
**コントロールの破棄
!サンプル4 コード中でコントロールを作成、削除する
*[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication4_selfcreate.zip]
Form1.cs
public partial class Form1 : Form
{
Button button = null;
...
//初期化メソッド
private void Form1_Load(object sender, EventArgs e)
{
button = new Button();
button.Text = "Dispose";
button.Location = new Point(50, 150);
button.Size = new Size(200, 50);
//フォームにbuttonを所属させる
this.Controls.Add(button);
//クリック時のイベントの登録
button.Click += new EventHandler(button_Click);
}
!!画像の描画
:画像の描画手順:画像の描画には、主にGraphicsクラスを用いて、PictureBoxのImageクラスに対して描画を行う。
:コード例:
//書き込む画像をファイルから読み込み
Image drawimage = new Bitmap(書きたい画像のパス);
//ピクチャボックスを作成
PictureBox picturebox = new PictureBox();
//ピクチャボックスのイメージを初期化
picturebox.Image = new Bitmap(picturebox.Width,picturebox.Height);
//描画を行うクラスを作成(ここで引数にしたImageに書き込んでいく)
Graphics graphics = Graphics.FromImage(picturebox.Image);
//画像を左上(0,0)に描画
graphics.DrawImage(drawimage,new Point(0,0));
//不要になったオブジェクトを破棄
graphics.Dispose();
//画面を更新(しないと反映されない)
picturebox.Reflesh();
!サンプル5 画像の削除/読み込みと表示
[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication5_picturebox.zip]
!乱数の操作
:乱数の生成:
*[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication6_random.zip]
:乱数の種を指定して、その系列を確かめるプログラム:乱数と種に関する話はシミュレーション参照
*[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication7_randomhistory.zip]
!!ネットワークシミュレーションの基礎の雛形
!ノードの作成と表示
*[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication8_node.zip]
!P2Pモデルの作成
*[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication9_p2p.zip]
!車車間通信モデルの作成