SUNWEN チュートリアル - C# 上級 (4)
皆さんこんにちは、私は武漢中国師範大学のSUNWENです。笑、午後にやっと外に出て遊ぶ時間ができました。チケットは10元で、それほど高くはありませんでした。すぐにご覧いただけます
早速、今回説明したいのは、C# の属性です。私は男性であり、男性は私の属性です。私は新入生です。属性はオブジェクトのプロパティです。以下に 2 つの例を示します。例は、変更可能な属性を宣言する方法を示しています。別の例では、抽象プロパティ (Abstract) を作成し、それをサブクラスで破棄する方法を示しています。
例 1:
000: // PROpertiesperson .cs
001 : using System;
002: class Person
003: {
004: private string myName ="N/A";
005: private int myAge = 0;
006:
007: // キャラクターを宣言属性名
008: 公開文字列 Name
009: {
010: get
011: {
012: return myName;
013: }
014: set
015: {
016: myName = 値; 018: }
019:
020: // int 型の Age プロパティを宣言します
021: public int Age
022: {
023: get
024: {
025: return myAge
026: }
027: set;
028 : {
029: myAge = 値;
030: }
031: }
032:
033: パブリックオーバーライド文字列 ToString()
034: {
035: return "Name = " + Name + ", Age = " + Age;
036: }
037:
038: public static void Main()
039: {
040: Console.WriteLine("Simple Properties");
041:
042: // Person インスタンスを作成します
043 : 人物 person = new Person();
044:
045: //属性を出力します
046: Console.WriteLine("人物詳細 - {0}", person);
047:
048: // 右プロパティの設定を行います
049: person.Name = "Joe";
050: person.Age = 99;
051: Console.WriteLine("個人詳細 - {0}", person);
052:
053 : / / 年齢を追加します
054: person.Age += 1;
055: Console.WriteLine("個人の詳細 - {0}", person);
056: }
057: }
この例の出力は次のとおりです。
単純なプロパティ
人物の詳細 - 名前 = Joe、年齢 = 99
人物の詳細 - 名前 = Joe、年齢 = 100
さて、また起きて書きました。昨日は、走って寝てしまいました、笑 今日は何記事書けるか見てみましょう
上記のプログラムから、その設定がわかります。 VB の概念を借用したクラスの属性の表現は、Java とは異なります (これは M$、TMD です!) 一部の友人は、なぜ Console.WriteLine() を使用してオブジェクト person を出力できるのか疑問に思っているかもしれません。これは理にかなっています。JAVA と同様に、レギュレータが print メソッドを使用すると、オブジェクトは自動的に ToString() (JAVA、TMD の toString、これもほぼ間違いです!) メソッドを呼び出します。33 行目に、次のメソッドがあります。このメソッドのシャドウ。override キーワードはおそらく親クラスをオーバーライドするメソッドです。これは、オブジェクトの属性の設定が get() と set() の組み合わせによって完了することがわかります。もちろん、value と呼ばれるものもあります。たとえば、属性を書き込みたくない場合は、単に get() と set() を削除するだけで、属性の読み取り/書き込み権限を制御することもできます。 、ただ set() しないでください。読みたくない場合は get() しないでください。この点では C# は JAVA ほど柔軟ではないといつも感じています (もう終わりです。
2 番目の例:
この例は、抽象属性 (Abstract) を作成する方法を示しています。 いわゆる抽象属性とは何ですか? (ああ、毎回意味のないことがたくさんあります)。 ! FT) 抽象クラスは実行属性アクセス プロシージャを提供しないため、次の例には 3 つのファイルがあり、結果を取得する必要があります。
abstractshape.cs: Shapeクラス、Area 抽象プロパティが含まれています。
shapes.cs: Shape のサブクラスshapetest.cs: 表示プログラム
これらのプログラムをコンパイルするには、次のコマンドを実行します。 実行後、実行可能プログラムshapetest.exe.
000: // Propertiesabstractshape.cs
001: System を使用します;
002:
003: パブリック抽象クラス Shape
004: {
005: private string myId;
006:
007: public Shape(string s)
008: {
009: Id = s; // この文は Id 属性の set ビルダーを呼び出します
010: }
011:
012: public string Id
013: {
014: get
015: {
016: return myId ;
017: }
018:
019: set
020: {
021: myId = value;
022: }
023: }
024:
025: public abstract double Area
026: {
027: get;
028: }
029:
030: パブリックオーバーライド文字列 ToString()
031: {
032: return Id + " Area = " + double.Format(Area, "F");
033: }
034: }
このプログラムを見ると、実際には、このクラスペアのオブジェクトを作成するときに、初期化部分が 007-010 であり、そのオブジェクトのパラメーター s を Id 属性に与えます。実際、抽象属性を Java のインターフェイスと比較できます。これらはメソッドの名前のみを示しますが、このメソッドの内容は提供しません。Area と同様に、get はありますが、それはありません。 get メソッドの内容 (メソッドとは言えないかもしれません) は指定されていません。つまり、get によって行われる処理はそのサブクラスによって行われます。このファイルでは、クラスがオーバーライドされます。 Area プロパティをオーバーライドします。
000: // Propertiesshapes.cs
001: public class Square : Shape002: {
003: private int mySide;
004:
005: public Square(int side, string id ) :base (id)
006: {
007: mySide = サイド;
008: }
009:
010: public override double Area
011: {
012: get
013: {
014: return mySide * mySide ;
015 : }
016: }
017: }
018:
019: public クラス Circle : Shape
020: {
021: private int myRadius;
022:
023: public Circle(int radius, string id) :base( id)
024: {
025: myRadius = radius;
026: }
027:
028: public override double Area
029: {
030: get
031: {
032: return myRadius * myRadius * System.Math .PI;
033: }
034: }
035: }
036:
037: public class Rectangle : Shape
038: {
039: private int myWidth;
040: private int myHeight;
041:
042: public Rectangle(int width, int height, string id) :base(id)
043: {
044: myWidth = width;
045: myHeight = height;
046: }
047:
048: public override double Area
049: {
050: get
051: {
052: return myWidth * myHeight;
053: }
054: }
055: }
この例では、何をするのか少し混乱します。継承、JAVA の extends に相当すると思います。まず見てみましょう。
000: // Propertiesshapetest.cs
002: {
003: public static void Main()004: {
005: Shape[] シェイプ =
006: {
007: new Square(5, "Square #1"),
008: new Circle(3, "Circle #1"),
009: new Rectangle(4, 5, "Rectangle #1")
010: };
011:
012: System .Console.WriteLine("Shapes Collection");
013: foreach(Shape s in Shapes)
014: {
015: System.Console.WriteLine(s);
016: }
017:
018: }
019 : }
この例から、 : 記号は次のことを行います。継承とは何を意味しますか? 端的に言うと、次の文では、sunwenson extends sunwen という名前は、sunwen に加えて、sunwenson クラスが継承することを意味します。これは単純ですが、ソフトウェアの再利用性を大幅に向上させることができるため、最新のソフトウェア開発において重要なテクノロジです。 . 残念ながら、これを言えるのは後輩と先輩だけなので、私には資格がありません (笑)
このプログラムの出力は次のとおりです:
Square #1 Area = 25.00
Rectangle # 1 エリア = 20.00
以上で、このセクションは終わりです。特に JAVA や C++ プログラミングの経験がない人にとっては、このセクションを理解するのは少し難しいです。しかし、恐れることなく、学ぶ勇気を持ってください。何かを学んだので、休まなければなりません。
上記は SUNWEN チュートリアル - C# 上級 (4) の内容です。 、PHP 中国語 Web サイト (www.php.cn) に注意してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。
