1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

c# 基礎 その5

Posted at

###クラス###

修飾子 概要
public すべてのクラスからアクセス可能
internal 同じアセンブリ内からのみアクセス可能
abstract 抽象メンバーを指定
static 静的メンバーを指定
sealed 他クラスから継承できない

アセンブリとは、ビルドによって出来上がった実行可能なファイルのこと(.exe, .dllなど)。Visual Studioでは、基本的に1プロジェクトが1アセンブリとなるため、同一のプロジェクトでアクセス可能とも言い換えることができる。

using System; // using宣言

namespace SelfCSharp // 名前空間
{
    public class Person // クラス定義 
    {
        public string firstName; // フィールド定義

        public Person() // コンストラクタ
        {

        }

        public string FirstName // プロパティ定義
        {
            
        }

        public void Show() // メソッド定義
        {
            
        }
    }
}

フィールド
classブロックの直下で宣言された変数。メンバー変数ともいう。

メソッド

メソッドのオーバーライド
メソッド名は同じで、引数の型や並びが異なるメソッドを複数定義することをメソッドのオーバーロードという。戻り値の型が違うだけではオーバーロードできない。

コンストラクター
インスタンス化したタイミングで呼び出されるメソッド。引数のないコンストラクターのことをデフォルトコンストラクターという。コンストラクターもオーバーロードできる。
別のコンストラクタから初期化したい場合、コンストラクター初期化子を使うことで呼び出せる。

public Person(string name)
{
  Console.WriteLine(name);
}

public Person() : this("もち太郎")
{
}

クラスを初期化する場合、オブジェクト初期化子を使うことでも初期化できる。(アクセス可能なメンバーのみ)

var p = new Person()
{
  name = "もち太郎",
  type = "身軽"
};

フィールドの初期化 → コンストラクタ → オブジェクト初期化子

クラスフィールド・クラスメソッド
インスタンスを生成しなくても直接呼び出せるフィールド・メソッドのこと。インスタンス化していないので this も使えない。

クラス定数
classブロックの直下で定義された定数。

class Test
{
  public static readonly string Name = "もち太郎";
  public const int Value = 10; // constだけでstatic扱いなのでstaticは不要
}

静的コンストラクタ
初めて呼び出された際に初期化される静的なコンストラクタ。

静的クラス
newできないクラス。

#引数
ref修飾子
refをつけると値ではなく参照を渡す。out修飾子とは違い、変数を初期化してから渡す必要がある。

out修飾子
refと似ているが、outは変数を初期化する必要がない。ただしメソッド内部で割り当てる必要がある。

    class MainClass
    {
        public static void Main(string[] args)
        {
            int x = 0;
            int y;
            MyClass.TestFunc(ref x, out y);

            Console.WriteLine(x);
            Console.WriteLine(y);

        }

    }

    class  MyClass
    {
        public static void TestFunc(ref int x, out int y)
        {
            y = 2;
        }
    }

タプル(C#7以降)
返り値を複数持てる。

        public static (int max, int min) TestFunc(int x, int y)
        {
            return (x > y) ? (x, y) : (y, x);
        }

匿名型

var test = new {Name = "もち太郎", Price = 1000};

イテレーター

        public IEnumerable<string> GetString()
        {
            yield return "もち太郎";
            yield return "ちまき";
        }
1
5
0

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
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?