LotosLabo

プログラミング技術とか気になった情報を載せていきます

C#について1

C#とは


Microsoft が提唱するアプリケーション実行基盤である .NET Framework で動作するアプリケーションを開発するためのプログラミング言語です。
C++ の柔軟性と Visual Basic(VB) の生産性を併せ持つ言語ともいわれ、非常に人気な言語です。


開発環境


無料で構築できる、Visual C# 2010 Expressとか使うのもいいですね。
私はVisual Studio2012の製品版を使って行きます。

C#の書き方


新規作成からプロジェクト→Visual C#を選びWindowsフォームアプリケーションを選択し、プロジェクトを作成します。


f:id:lo25131:20140202022849j:plain


Windowsフォームアプリケーションではデザインが作成でき、ドラッグ&ドロップでコントロールを配置できます。
しかし、そんな補助いらないという方にはコンソールアプリケーションを選びましょう。
私はこっちを選んでいます。


初期状態のコードはこんなかんじになっています。


f:id:lo25131:20140202024222j:plain


プログラムは主に static void Mainの中に書いていきます。
CやC++は拡張子が.c、.cpだったのに対して、C#は.csとなります。


基本プログラム

基本出力

using System;

class Program
{
   static void Main(string[] args)
   {
        Console.WriteLine("こんにちは");
   }
}


これは「こんにちは」を出力する簡単なプログラムです。



コメントの書き方

// コメント

/* コメント
  コメント*/

/// ドキュメンテーションコメント



ドキュメンテーションコメントというのはソースコードからドキュメントを生成するためのコメントです。
これはXML Documentに用いるものなので、今回は説明しません。


その他の出力方法(文字の表示等)


Console.WriteもしくはConsole.WriteLine


最後に改行を入れる
Console.WriteLine("こんち");


改行を入れない
Console.Write("こんち");


例:

int a =1, b=2;
Console.Write("a={0}, b= {1}",a,b);


出力:

a=1,b=2


入力方法(ユーザーからの入力)

Console.ReadLine


文字入力
var str = Console.ReadLine();


数値入力
var a = int.Parse(Console.ReadLine());
var b = double.Parse(Console.ReadLine());


変数

bool b;    論理値型
int n;     整数型
double x;   実数型
char c;    文字型
string s;   文字列型


定数(リテラル

直接ソースファイル中に値が書かれた定数のこと


bool b = true;       論理値リテラル
int n = 424;       整数リテラル
double x = 1.23;     実数リテラル
char c = 'a';        文字リテラル
string s = "文字列";    文字列リテラル


型推論


varキーワードを使用して、型を明示せずに定数を定義


var b = true;     論理値
var n = 424;     整数
var x = 1.23;     実数
var c = 'a';      文字
var s = "文字列";   文字列


◆エラーに成ってしまう時

var x;   ←初期化されてない


var n = 0;
n = "";   ←型が変わっている


式と演算子


int a= 3, b= 5, c,d
c = (a+b)/2;
d = a*b;


組み込み型

◆整数型

byte     int
sbyte    uint
short    long
ushort    ulong


◆文字型

(エスケープシーケンス)

\n     改行
\t     タブ


浮動小数


float
double

インクリメント・デクリメント

  ++x    前置きインクリメント
  x++    後置きインクリメント
  --x    前置きデクリメント
  x--    後置きデクリメント


シフト

※表示されなかったので囲んでいます

 x<<i    //左シフト	 
 x>>i	   //右シフト	



文字列連結


文字列同士を+で連結できる

x + y


例:

string s = "abc" + "def"; // s は "abcdef" になる。



論理演算子


x & y   xとyの論理積を計算
x | y    xとyの論理和を計算
x ^ y   xとyの排他的論理和を計算
! x    xの論理否定を計算


関係演算


x == y   xがyと等しいかどうか
x != y   xがyと異なるかどうか
x < y    xがyより小さいかどうか
x > y    xがyより大さいかどうか
x <= y   xがy以下かどうか
x >= y   xがy以上かどうか


代入演算

x = y   xにyを代入します
x += y   x= x+yと同じ結果が得られる

条件演算子


c ? x : y

c が true ならば x を、false ならば y を返します

定数


全く変化しない値を異なる場所で何度も使いたいことがある。constというキーワードを使い定義する。変数のように見えるが、値の変更はできない。またreadonlyは読み取り専用の変数を定義できる定数。

const

・ローカル変数にも使える
・常に静的変数と同じ扱い
・宣言時にのみ初期化可能
コンパイル結果はリテラルと同等
インスタンスを new で生成するようなものには使えない

readonly

・クラスのメンバー変数のみ
・static の有無を変えられる
コンストラクタ内で値を書き換え可能
コンパイル結果は変数と同等
・new 可能



例:

const int NUM = 5;
readonly int num;

条件式

if文


if(条件式){
文1
}else{
文2
}


switch文


switch(変数)
{
case 値1:
文1
break;
case 値2:
文2
break;
default:
文3
break;
}


goto文


if文やswitch文とは異なり、無条件に処理の流れを変えるもの


例:

START:
Console.Write("あいうえお");
goto START; STARTまで移る



これでは無限ループしてしまう

while文


while括弧内の条件式が真の間ずっと文が実行されます。

while(条件式)
{
繰り返したい文
}

抜け出したいときは

while(条件式)
{
繰り返したい文
break
}


ループの先頭に戻る

while(条件式)
{
 繰り返したい文
continue;
}


do-while文


do
{
繰り返したい文
}
while(条件式);
文1


for文


for(初期化式; 条件式; 更新式)
反復を行いたい文

for(int x=1; x<=9; ++x) xを1~9まで1ずつ増やして繰り返し
{
処理1
}


foreach文


配列の全ての要素にアクセスするための専用の構文。


foreach(変数宣言 in 配列名)
繰り返したい文


foreach(double x in a)
{
y += x;
}