atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
プログラミング図書館・本館
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
プログラミング図書館・本館
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
プログラミング図書館・本館
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • プログラミング図書館・本館
  • 型

型

最終更新:2011年01月25日 20:01

atachi

- view
管理者のみ編集可
  • 型の種類
  • リテラル
    • 数値リテラル
    • 文字リテラル [#l02b89d5]
    • 文字列リテラル
  • 配列
    • 四角い多次元配列
    • 配列内の配列による多次元配列
  • 定数
  • null許容型
  • 型推論変数
  • dynamic変数

型の種類



リテラル




数値リテラル


int x   = 10;
uint ul = 10U; //符号なしの整数リテラルは「U」をつける
long m  = 2591L; // long型の整数リテラルは「L」をつける
ulong   = 3712UL; // 「U+L」、符号なしのlong
 

数値の表現方法は次の通り。

int dec = 10; // 10進数表記
int hex = 0x0A; // 16進数表記
 

文字リテラル [#l02b89d5]


文字と文字列は別物です。C#では文字リテラルは2バイトデータとして扱われ「'(シングルクオーテーション)」で囲う。

char c = 'a';
 


文字列リテラル


C#では文字列リテラルは「"(ダブルクオーテーション)」を使用するか、@-quoted形式で定義する。

string s = "文字列です"; // ダブルクオーテーション
string path = @"C:\windows\system"; // @-quoted形式
 

@-quoted形式で文字列リテラルを定義すると、通常ならエスケープシーケンスとなる「\」をそのまま使用することができる。
また、次のように複数行に渡って文字列を定義することができ、改行コードなどの制御コードも含めた文字列リテラルを定義できる。

// 複数行の文字列
string multi = 
@"@-quoted string では、
文章を複数行に渡って書くことができます。";
 


配列


配列の作成には、予め配列のサイズを指定しておく方法と初期データを与えてサイズの設定と初期値の両方を設定する方法がある。

int[] array = new int[5]; // サイズのみを指定して作成
 
int[] array = new int[] { 1, 2, 3}; // 初期値を指定して作成
                                    // arrayの配列長は、自動的に「3」となる。
 

配列の要素にアクセスする場合は添字を使用する。添字は数値リテラルと変数によって指定できる。

int[] array = new int[] { 1, 2, 3};
 
int val1 = array[0]; // val1 = 1
 
int pos = 2;           // 添字に変数を使用する
int val2 = array[pos]; // val2 = 3
 

配列の配列長を取得するにはLengthプロパティへアクセスする。

int[] array = new int[] { 1, 2, 3};
int len = array.Length; // len = 3
 

四角い多次元配列


C++やJavaにはない多次元配列で、アクセス方法が次のように添字を指定して各要素にアクセスできます。

// 初期化
int[,] 2di = new int[,]{
	{0,0},{0,1},{0,2},
	{1,0},{1,1},{1,2}
	{2,0},{2,1},{2,2}
};
 
int[,] d = 2di[1,0]; // dには1つの要素を持った四角い多次元配列
 

int[,] 2d; // 二次元配列の変数
int[,,] 3d; // 三次元配列の変数
 
int[,] 2de = new int[10,10]; // 10×10の四角い配列
int[,,] 3de = new int[10,10,10]; // 10×10×10の四角い立体的な配列
 
// 初期化
int[,] 2di = new int[,]{
	{0,0},{0,1},{0,2},
	{1,0},{1,1},{1,2}
	{2,0},{2,1},{2,2}
};
 

配列内の配列による多次元配列


C++やJavaで実装されている多次元配列で、配列内に配列が入っているイメージ。

ind[][] 2d = new int[10][10]; // 10×10の配列だが、イメージとしては配列の中に配列が入っているイメージ
 
int[][] 2di = new int[][] {
	new int[] {1,2,3},
	new int[] {1,2,3},
	new int[] [1,2,3}
}
 

定数

constキーワードをつける。

null許容型


class NullableExample
{
    static void Main()
    {
        int? num = null;
        if (num.HasValue == true)
        {
            System.Console.WriteLine("num = " + num.Value);
        }
        else
        {
            System.Console.WriteLine("num = Null");
        }
 
        // y is set to zero
        int y = num.GetValueOrDefault();
 
        // num.Value throws an InvalidOperationException if num.HasValue is false
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}
 

型推論変数



C#3からはVisualBasicなどのように変数の型をコンパイラに推論させる変数を定義できる。

var name = "Personal Name";
var age  = 19;
 
// nameはstring型
// ageはint型
 

また、型推論変数は必ず値の初期化と共に定義しなければならない。

dynamic変数



C#4からは型推論変数によく似たdynamic変数を実装しました。

型推論変数はコンパイラがコンパイル時に型を予測し、データに基づいて正しい型に変換してILを作成することに対し、dynamic変数は型の予測は一切行わず、ランタイムまでdynamic型の変数として認識します。

var age = 18; // ageはコンパイル時には「int型」
dynamic name = "Personal Name"; // nameはコンパイル時には「dynamic型」
 

dynamic型を使用すると何ができるかというと、下記のようなコードを記述できます。~
これは型の定義がコンパイル時ではなく、ランタイムで解決されるためです。

dynamic name = "Person Name";
name.UpperCase();
 

name変数の中身はstring型で、「name.UpperCase()」のようなUpperCase()メソッドの呼び出しは、dynamic型によって内部データ型へプロキシされます(string.UpperCase()が呼び出される)

もし、string型にUpperCaseメソッドが定義されていない場合は、ランタイムで例外が発生します。~
強い型定義変数や型推論変数では、メソッドが定義されていない場合のエラーはコンパイル時に知ることができましたが、dynamic変数を使用した場合、ランタイムまでこの問題が表面化しません。そのため、運用には注意が必要となります。
「型」をウィキ内検索
LINE
シェア
Tweet

[Amazon商品]


プログラミング図書館・本館
記事メニュー

C#

  • 新機能
  • 言語文法
    • 型
    • 関数
    • クラス
    • 演算子
    • 構文
    • デリゲート
    • イベント
    • 例外処理
    • アトリビュート
    • 名前空間
    • ジェネリクス
  • リフレクション
  • LINQ

.NET Frameworks

  • 数値
  • 文字列
  • 日付時刻
  • オブジェクト
  • コレクション
  • ファイルシステム
  • スレッド
  • データテーブル
  • グラフィックス
  • デバッグ
    • ログ出力
    • ユニットテスト
  • ユーティリティ
  • ネットワーク
    • HTTP
  • デバイス
    • COMポート
  • EntityFrameworks
    • Code First Programming Model
  • デバイスドライバ
    • WinUSB

WPF

  • XAML
  • イベント
  • コマンド
  • スタイル
  • データバインディング
  • コンポーネント
  • グラフィックス
  • カスタムコンポーネント
    • 依存関係プロパティ

アプリケーション

  • 二重起動の防止
  • アンマネージドDLLの読み込み
  • 外部のアプリケーションを起動

VisualStudio

  • 拡張機能
  • カラー設定

ライブラリ

  • WPFToolkit
  • A Fast CSV Reader
  • AvalonDock

実装方法

  • ドラッグアンドドロップ
  • アプリケーション内のドラッグアンドドロップ
  • CSVからDataTable

minecraft

  • Bukkit
  • プラグイン
    • Permissions
    • SlowHealth
    • CookieMonster
    • iConomy
    • WorldGuard
    • Lockette
    • MyHome
    • BorderGuard

サイトについて

プロフィール/リンク/未分類

メモ/ゲーム/Stacks/Omoikane


更新履歴

取得中です。

ここを編集

記事メニュー2

読んでいる本


Effective C#

QLOOKアクセス解析

ここを編集

人気記事ランキング
  1. .NET/WinUSB
  2. WPF/コンポーネント/コントロール/テキストボックス/バリデーション
  3. WPF/コマンド
もっと見る
最近更新されたページ
  • 5034日前

    Bukkit
  • 5041日前

    トップページ
  • 5062日前

    メニュー
  • 5072日前

    WPF/グラフィックス
  • 5072日前

    .NET/グラフィックス
  • 5072日前

    .NET/グラフィックス/画像の書き込み
  • 5072日前

    .NET/グラフィックス/画像の読み込み
  • 5078日前

    .NET/コレクション
  • 5096日前

    .NET/WinUSB
  • 5130日前

    BorderGuardプラグイン
もっと見る
人気記事ランキング
  1. .NET/WinUSB
  2. WPF/コンポーネント/コントロール/テキストボックス/バリデーション
  3. WPF/コマンド
もっと見る
最近更新されたページ
  • 5034日前

    Bukkit
  • 5041日前

    トップページ
  • 5062日前

    メニュー
  • 5072日前

    WPF/グラフィックス
  • 5072日前

    .NET/グラフィックス
  • 5072日前

    .NET/グラフィックス/画像の書き込み
  • 5072日前

    .NET/グラフィックス/画像の読み込み
  • 5078日前

    .NET/コレクション
  • 5096日前

    .NET/WinUSB
  • 5130日前

    BorderGuardプラグイン
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  2. MadTown GTA (Beta) まとめウィキ
  3. R.E.P.O. 日本語解説Wiki
  4. シュガードール情報まとめウィキ
  5. ソードランページ @ 非公式wiki
  6. AviUtl2のWiki
  7. Dark War Survival攻略
  8. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  9. ヒカマーWiki
  10. 星飼いの詩@ ウィキ
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  5. 初音ミク Wiki
  6. 発車メロディーwiki
  7. 検索してはいけない言葉 @ ウィキ
  8. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  9. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  10. オレカバトル アプリ版 @ ウィキ
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  3. ストグラハードコア - ストグラ まとめ @ウィキ
  4. 機体一覧 - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  5. 鬼レンチャン(レベル順) - 鬼レンチャンWiki
  6. ヤマダ電機の唄 - アニヲタWiki(仮)
  7. 危険度7 - 検索してはいけない言葉 @ ウィキ
  8. チンポ画像収集場 - 検索してはいけない言葉 @ ウィキ
  9. ドンキーコング バナンザ - アニヲタWiki(仮)
  10. 寧波(ジョジョの奇妙な冒険) - アニヲタWiki(仮)
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.