ホームページ バックエンド開発 C#.Net チュートリアル C#基礎知識編:基礎知識(3)クラス構造

C#基礎知識編:基礎知識(3)クラス構造

Feb 10, 2017 pm 03:38 PM

オブジェクトをインスタンス化するときに、YSchool クラスと YTeacher クラスを定義しました。

            YSchool shool1 = new YSchool();

            shool1.ID = 1;

            shool1.Name = "清华附中";

            YSchool school2 = new YSchool();

            school2.ID = 2;

            school2.Name = "北师大附中";
ログイン後にコピー

これは、論理的に間違っています。なぜなら、オブジェクトがインスタンス化されるときに、そのプロパティがインスタンス化に含まれる必要があるからです。後で属性を追加するよりも簡単です。プログラムのパフォーマンスでは、属性には初期値が必要です。
したがって、戻り値の型がなく、メソッド名がクラス名と同じで、パラメーター クラス リストが存在するか、パラメーター リストが存在しない、そのようなメソッドがクラス内に存在する必要があります。一般に「コンストラクター」または「コンストラクター」として知られる構築方法です。もちろん、クラスには 1 つ以上のコンストラクターを含めることができますが、これはクラスにデフォルトのコンストラクターが存在しないという意味ではありません。複数のコンストラクターを使用する場合、それぞれのパラメーター リストは異なる必要があります。
以下では、このクラスを完了するための例として YSchool を使用します。

  /// <summary>
    /// YSchool类的id和name是它的固有属性,它的值应该是确定的。
    /// 实例化的同时对属性赋初值,用到构造函数。
    /// </summary>
    public class YSchool
    {
        private int id = 0;

        private string name = string.Empty;

        public int ID
        {
            get
            {
                return this.id;
            }
        }

        public string Name
        {
            get
            {
                return name;
            }
        }
        /// <summary>
        /// 没有参数的构造器称之为“默认构造器”;如果没有写一个构造器,那么
        ///系统也会提供一个默认的构造器,所以说类至少有一个构造器;
        ///当然,如果系统提供的默认构造函数,则属性初值为声明时赋的初值,如果声明
        ///未赋初值,则是“类型默认值”,比如0或者null。
        /// </summary>
        public YSchool()
        {
            this.id = 0;

            this.name = @"清华附中";
        }
        /// <summary>
        /// 带有参数列表的构造函数,
        /// 属性的值就是传入的列表的值。
        /// </summary>
        /// <param name="id"></param>
        /// <param name="name"></param>
        public  YSchool(int id, string name)
        {
            this.id = id;

            this.name = name;
        }
        public  YSchool(int id)
        {
            this.id = id;

            this.name = @"陕科大附中";
        }
    }
ログイン後にコピー
   class Program
    {
        static void Main(string[] args)
        {
            YSchool shool1 = new YSchool();

            YSchool school2 = new YSchool(1, @"西工大附中");

            YSchool school3 = new YSchool(2);

            Console.ReadKey();
        }
    }
ログイン後にコピー

id と name の get/set 属性も get のみに変更されました。これらの属性値は固有の属性であるため、インスタンス化後に値を割り当てるのは論理的ではありません。つまり、これらのプロパティは読み取り専用です。

デフォルト値はコードに記載されています。ここで簡単に説明しましょう。フィールドを宣言する場合、代入演算子「=」を使用してフィールドに値を直接追加できます。たとえば、

    string name = string.Empty;
ログイン後にコピー

デフォルト値は単なる形式です。変数の値がまだコンストラクター内にあります。一般に、標準コードでは、変数を宣言するときに変数に初期値を割り当てる必要があります。有効期間中に割り当てられたフィールドがない場合、コンパイラはフィールドを設定されたデフォルト値に割り当てる割り当てコードを追加します。実際、フィールドにデフォルト値を追加するかどうかに関係なく、フィールドにはデフォルト値がありますが、デフォルト値を人為的に追加しない場合、フィールドのデフォルト値は 0 または null になります。
ここでもう 1 つ注意すべき点は、システムのデフォルト コンストラクターについては前述しましたが、コンストラクターが定義された時点では、システムのデフォルト コンストラクターは存在しないということです。したがって、場合によっては、デフォルト コンストラクターとパラメーター付きコンストラクターの両方が使用される場合は、デフォルト コンストラクターを手動で定義する必要があります。たとえば、

        public YSchool()
        {

        }
ログイン後にコピー

または

        public YSchool()
        {
            this.id = 0;

            this.name = @"尚进";
        }
ログイン後にコピー

要約すると、クラスをインスタンス化するための標準的な式は次のようになります: クラス名 インスタンス名 = 新しいクラス名 (コンストラクター パラメーター リスト);

上記は、C# の基本的な知識を整理したものです。基礎知識 ( 3) クラス構造の内容については、PHP 中国語 Web サイト (www.php.cn) を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C# を使用した Active Directory C# を使用した Active Directory Sep 03, 2024 pm 03:33 PM

C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# のアクセス修飾子 C# のアクセス修飾子 Sep 03, 2024 pm 03:24 PM

C# のアクセス修飾子のガイド。 C# のアクセス修飾子の種類について、例と出力とともに説明しました。

C# の乱数ジェネレーター C# の乱数ジェネレーター Sep 03, 2024 pm 03:34 PM

C# の乱数ジェネレーターのガイド。ここでは、乱数ジェネレーターの仕組み、擬似乱数の概念、安全な数値について説明します。

C# データ グリッド ビュー C# データ グリッド ビュー Sep 03, 2024 pm 03:32 PM

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

C# のパターン C# のパターン Sep 03, 2024 pm 03:33 PM

C# のパターンのガイド。ここでは、C# のパターンの概要と上位 3 種類について、その例とコード実装とともに説明します。

C# シリアル化 C# シリアル化 Sep 03, 2024 pm 03:30 PM

C# シリアル化のガイド。ここでは、C# シリアル化オブジェクトの導入、手順、作業、例についてそれぞれ説明します。

C# 文字列ライター C# 文字列ライター Sep 03, 2024 pm 03:23 PM

C# StringWriter のガイド。ここでは、C# StringWriter クラスの概要とその動作について、さまざまな例やコードとともに説明します。

C# での Web サービス C# での Web サービス Sep 03, 2024 pm 03:32 PM

C# での Web サービスのガイド。ここでは、C# での Web サービスの概要について、テクノロジの使用、制限、例を交えて説明します。

See all articles