検索

皆さんこんにちは、私は武漢中国師範大学の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: }
この例の出力は次のとおりです。

単純なプロパティ

人物の詳細 - 名前 = N/A、年齢 = 0

人物の詳細 - 名前 = 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 : Shape

002: {
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

001: public class TestClass

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

Circle #1 Area = 28.27

Rectangle # 1 エリア = 20.00

以上で、このセクションは終わりです。特に JAVA や C++ プログラミングの経験がない人にとっては、このセクションを理解するのは少し難しいです。しかし、恐れることなく、学ぶ勇気を持ってください。何かを学んだので、休まなければなりません。


上記は SUNWEN チュートリアル - C# 上級 (4) の内容です。 、PHP 中国語 Web サイト (www.php.cn) に注意してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Web、デスクトップ、モバイル開発用のC#.NETWeb、デスクトップ、モバイル開発用のC#.NETApr 25, 2025 am 12:01 AM

C#と.NETは、Web、デスクトップ、モバイル開発に適しています。 1)Web開発では、ASP.Netcoreがクロスプラットフォーム開発をサポートしています。 2)デスクトップ開発では、さまざまなニーズに適したWPFとWINFORMSを使用します。 3)モバイル開発は、Xamarinを介したクロスプラットフォームアプリケーションを実現します。

C#.NETエコシステム:フレームワーク、ライブラリ、およびツールC#.NETエコシステム:フレームワーク、ライブラリ、およびツールApr 24, 2025 am 12:02 AM

C#.NETエコシステムは、開発者がアプリケーションを効率的に構築できるようにするための豊富なフレームワークとライブラリを提供します。 1.ASP.NETCOREは、高性能Webアプリケーションの構築に使用されます。2.EntityFrameWorkCoreは、データベース操作に使用されます。これらのツールの使用とベストプラクティスを理解することにより、開発者はアプリケーションの品質とパフォーマンスを向上させることができます。

azure/awsへのc#.netアプリケーションの展開:ステップバイステップガイドazure/awsへのc#.netアプリケーションの展開:ステップバイステップガイドApr 23, 2025 am 12:06 AM

c#.netアプリをAzureまたはAWSに展開する方法は?答えは、AzureAppServiceとAwselasticBeanStalkを使用することです。 1。Azureでは、AzureAppServiceとAzurePipelinesを使用して展開を自動化します。 2。AWSでは、Amazon ElasticBeanstalkとAwslambdaを使用して、展開とサーバーレス計算を実装します。

C#.NET:強力なプログラミング言語の紹介C#.NET:強力なプログラミング言語の紹介Apr 22, 2025 am 12:04 AM

C#と.NETの組み合わせにより、開発者に強力なプログラミング環境を提供します。 1)C#は、多型と非同期プログラミングをサポートします。2).NETは、クロスプラットフォーム機能と同時処理メカニズムを提供し、デスクトップ、Web、モバイルアプリケーション開発で広く使用されています。

.NETフレームワーク対C#:用語のデコード.NETフレームワーク対C#:用語のデコードApr 21, 2025 am 12:05 AM

.NetFrameworkはソフトウェアフレームワークであり、C#はプログラミング言語です。 1..netframeworkは、デスクトップ、Web、モバイルアプリケーションの開発をサポートするライブラリとサービスを提供します。 2.C#は.NetFrameWork用に設計されており、最新のプログラミング機能をサポートしています。 3..NetFrameworkはCLRを介してコード実行を管理し、C#コードはILにコンパイルされ、CLRによって実行されます。 4. .NetFrameWorkを使用してアプリケーションをすばやく開発し、C#はLINQなどの高度な関数を提供します。 5.一般的なエラーには、タイプ変換と非同期プログラミングデッドロックが含まれます。 VisualStudioツールは、デバッグに必要です。

C#.NETの分解:初心者の概要C#.NETの分解:初心者の概要Apr 20, 2025 am 12:11 AM

C#は、Microsoftが開発した最新のオブジェクト指向プログラミング言語であり、.NETはMicrosoftが提供する開発フレームワークです。 C#は、CのパフォーマンスとJavaのシンプルさを組み合わせており、さまざまなアプリケーションの構築に適しています。 .NETフレームワークは、複数の言語をサポートし、ガベージコレクションメカニズムを提供し、メモリ管理を簡素化します。

C#と.NETランタイム:それらがどのように連携するかC#と.NETランタイム:それらがどのように連携するかApr 19, 2025 am 12:04 AM

C#と.NETランタイムは密接に連携して、開発者に効率的で強力なプラットフォームの開発機能に力を与えます。 1)C#は、.NETフレームワークとシームレスに統合するように設計されたタイプセーフおよびオブジェクト指向のプログラミング言語です。 2).NETランタイムは、C#コードの実行を管理し、ガベージコレクション、タイプの安全性、その他のサービスを提供し、効率的でクロスプラットフォームの操作を保証します。

C#.NET開発:始めるための初心者向けガイドC#.NET開発:始めるための初心者向けガイドApr 18, 2025 am 12:17 AM

C#.NET開発を開始するには、次のことが必要です。1。C#の基本的な知識と.NETフレームワークのコア概念を理解する。 2。変数、データ型、制御構造、関数、クラスの基本概念をマスターします。 3。LINQや非同期プログラミングなど、C#の高度な機能を学習します。 4.一般的なエラーのためのデバッグテクニックとパフォーマンス最適化方法に精通してください。これらの手順を使用すると、C#.NETの世界に徐々に浸透し、効率的なアプリケーションを書き込むことができます。

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境