1. .Net とは C#算术运算符包括+、-、*、/、%、++、--共七种 声明和创建多维数组的一般形式: 上例中numbers[0]=1,……,numbers[4]=5 3. 数组的初始化 注意在先声明后初始化时,不能采用简写形式,例如: 是错误的
.Net は、Microsoft が立ち上げたアプリケーション開発プラットフォームで、新世代の Microsoft Windows および Web アプリケーションを構築および実行するために使用できます。
2. .Net
.Net Framework のコア テクノロジー: .Net プラットフォーム コアのコアであり、.Net プラットフォームでのアプリケーションの操作のための基本的な フレームワーク を提供します。
.Net Enterprise Server: さまざまな開発ツール キットを含む、Microsoft の企業向けテクニカル サービスの一部。
ビルディング モジュール サービス: Microsoft が提供する COM+ コンポーネント サービスと XML Web サービス テクノロジは、ビルディング モジュール サービスを使用してアプリケーション モジュールを開発し、完全に機能するソフトウェアを迅速に組み立てることができます。
Visual Studio.Net: .Net プラットフォームの主要な開発ツール
3..Net Framework は、.NET プラットフォームに基づくアプリケーションの作成と実行をサポートするさまざまなコンポーネントで構成されています。
4. Net Framework フレームワークの最下層は、Windows オペレーティング システムによって提供されるさまざまなアプリケーション サービス コンポーネントです。これらのコンポーネントには、メッセージキューサービス、COM+ コンポーネント サービス、インターネット インフォメーション サービス (IIS)、Windows 管理ツール (WMI) が含まれます。 ) 待って。
5..Net Framework は、アプリケーションを開発するために統合できます。.Net Framework は、20 を超えるコンピューター プログラミング言語をサポートしています。 Visual Studio.Net 開発環境では、VB、C#、C++、J#、Jscript の 5 つの言語を直接使用して、任意のアプリケーションを開発できます。
6..Net Framework には、ADO.NET、ASP.NET、XML Web などに加えて、共通言語ランタイム (CLR) と .Net Frameworkクラス ライブラリ という 2 つの主要コンポーネントがあります。
7..Net Framework は 3 種類のユーザー インターフェイスをサポートしています:
コマンド コンソール、純粋な文字インターフェイスを使用したアプリケーションの設計に使用されます
Windows フォーム、Windows インターフェイスを使用したアプリケーションの設計に使用されます
Web フォーム、Web インターフェイス アプリケーションの設計に使用されます
8 .ADO.NET は、.Net Framework によって提供される Microsoft の新世代のオブジェクト指向データ処理テクノロジであり、データベース アプリケーションを簡単かつ迅速に開発するために使用できます。 ASP.Net は、.Net Framework によって提供される新しい Web アプリケーション開発テクノロジです。ASP.NET を使用した WEB アプリケーションの開発は、Windows アプリケーションの開発と同じくらい簡単です。 Xml Webサービスは、インターネット環境で直接呼び出すことができるコンポーネントです。 .Net Framework は、XML Web サービスを作成、テスト、展開するためのツールとクラスを提供します。
9.Net Framework は、アプリケーション開発者にプラットフォームに依存しない開発環境を提供します。 .Net Framework を使用してプログラムを開発すると、次の利点があります:
1. Web ベースの標準
.Net Framework は、既存のインターネット テクノロジとその他の Web 標準を完全にサポートします。
2. 統合されたアプリケーション
モデルを使用する
.NET と互換性のある言語であれば、.Net Framework クラス ライブラリを使用できます。 3. 開発者にとって使いやすい 開発者は、.Net Framework クラス ライブラリのクラスを呼び出す必要がある場合、クラス
属性
名前空間 を 参照 ソリューションに追加するだけで済みます。 4. 拡張可能なクラス .Net Framework はユニバーサル型システムを提供し、開発者は 継承
を通じてクラス ライブラリのクラスにアクセスしたり、クラス ライブラリのクラスを拡張したり、独自のクラス ライブラリを構築したりすることもできます。
C# の利点: (1) C# は、正確で、シンプルで、型
安全
なオブジェクト指向言語です。
(2) C# には、永続的なシステムレベルのコンポーネントを生成する機能があります。 (3) C# は、.Net Framework のユニバーサル型システムを使用して、他のプログラミング言語と相互運用します。 (4) C# は、MSMQ (Microsoft Message Queuing) サービス、COM+ コンポーネント サービス、XML Web サービス、および .Net Framework をサポートします。
(5) C# では、カスタム
データ型
と拡張メタデータが可能です。
(6) C# は、開発者が必要とする柔軟性を維持しながら、開発効率を向上させます。 C# プログラムの特徴: 4. C# プログラムのメソッドの構造 C# プログラムのメソッドは、メソッド ヘッダーとメソッド本体の 2 つの部分
グループ化
で構成されます。
メソッドヘッダー: メソッドのヘッダーはメソッドの最初の行で、戻り値の型、メソッド名、仮パラメーター名、仮パラメーターの型の説明が含まれます。 メソッド本体: メソッド本体は一対の中括弧「{ }」で囲まれ、通常は宣言ステートメントと実行ステートメントが含まれます。
5. C# プログラムのステートメント
C# プログラム内のすべてのステートメントは、1 行に複数のステートメントを記述することも、複数の行に 1 つのステートメントを記述することもできます。
6. C# プログラムの入出力操作
C# 言語自体には入出力ステートメントがないため、C# コンソール アプリケーションはクラス ライブラリの Console クラスのメソッド (ReadLine、WriteLine など) を使用する必要があります。 C# Windows アプリケーションと Web アプリケーションは、入出力を実現するためにクラス ライブラリの Control クラス (ラベル、テキスト ボックスなど) を使用する必要があります。
7. C# プログラムのコメント
は、「//」または「/*...*/」で追加できます。適切なコメントを追加すると、プログラムの読みやすさが大幅に向上します。
単純型は一意の値を持つデータ型を表し、以下の4種類があります: 1.
整数型 2. 浮動小数点型 3. 10進数型 4. ブール型
float型: 値の範囲 精度は±1.5e?45 ~ ±3.4e38 の 7 桁。Double タイプ: 値の範囲は ±5.0e?324 ~ ±1.7e308 です。3. 精度は 15 ~ 16 桁です。財務計算分野のニーズを満たすために、C# は 10 進データ型を提供します。値の範囲は ±1.0 からです。論理的真または論理的偽を表す値は true (true) または false ( false) 5. プログラムの実行中に値が変化しない量は、
定数
1、整数定数
整数定数と呼ばれます。定数は、符号付き整数定数、符号なし整数定数、長整数定数
符号付き整数定数に分けられます。 5 のように直接書き込まれます
符号なし整数定数は、書き込み時に u または U 符号を追加します (5U など)。 長整数定数は、書き込み時に l または L でマークされます (5L など)。 浮動小数点定数 浮動小数点。定数は単精度浮動小数点定数と倍精度浮動小数点定数に分けられます単精度浮動小数点定数は5FなどfやFマークを付けて書きます
倍精度定数はdやDマークを付けて書くと例えば5D
10 進数形式で直接書き込むと、5.0 が倍精度浮動小数点定数であるなど、自動的に倍精度浮動小数点定数として解釈されます。
3. 10 進定数
10 進定数の後に m または M マークを追加する必要があります。そうしないと浮動小数点データとして解釈されます。
4. 文字定数 (Unicode 文字):
文字定数は、'5'、'A'、'中'、'@' などの 2 つの一重引用符でマークされます。
C# のエスケープ文字定数はバックスラッシュでマークされます。 、制御文字と非表示文字を表すために使用されます。「b」は 1 文字戻ることを意味します。詳細は教科書
5のP26の表2-3を参照してください。ブール定数
は2つだけで、trueは論理的に真、falseは論理的に偽を意味します。
6.
文字列
定数
文字列定数は、「5」、「abc」、「中国語」など、二重引用符でマークされた複数の Unicode 文字で構成される文字シーケンスを表します。
構造型は struct でマークする必要があります。
構造メンバーには、データ メンバー、メソッド メンバーなどを含めることができます。
データ メンバーは、構造のデータ項目を表します。
メソッド メンバーは、データ項目に対する操作を表します。
1. 変数の概念
プログラムの実行中に値を変更できる量を変数と呼びます。
変数名
: すべての変数には名前が必要です。変数の名前付けは、識別子の命名規則に従う必要があります。たとえば、文字またはアンダースコアで始める必要があり、英字、数字、アンダースコアのみを含めることができ、スペースなどを含めることはできません。
変数値: 変数値はメモリに保存されます。変数の種類が異なると、占有するメモリ ユニット (バイト) の数も異なります。プログラムでは、変数の値は名前によって参照されます。
2. 変数の定義
変数定義の一般的な形式は次のとおりです: データ型 変数名 1、変数名 2,...; 例: int a,b,c;
long x,y;
float p1,p2;
float f1=1.25, f2=3.6;
值类型之间的数据可以相互转换,转换的方法有两种,一种是隐式转换,另一种是显式转换。
1. 隐式转换
如果参与运算的数据类型不相同,则先转换成同一类型,然后进行运算;
转换时按数据长度增加的方向进行,以保证精度不降低,例如int型和long型运算时,先把int数据转成long型后再进行运算;
所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算;
byte型和short型数据参与运算时,必须先转换成int型;
Char型可以隐式转换为ushort、int、uint、long、ulong、float、double或decimal型,但不存在其他类型到char类型的隐式转换。
2. 显式转换
强制类型转换的一般形式为:
(类型说明符) (待转换的数据)
例如:(int)(x+y) //把x+y的值强制转换为int型
注意:上例不可写为(int)x+y,另外经过强制类型转换后x、y本身的变量类型并不会改变
3. C#还允许使用System.Convert类提供的类型转换方法来转换数据类型
常用的转换方法有ToBoolean 、ToByte、ToChar、ToInt32、ToSingle、ToString等
例如
byte x=40,y=5; //定义字节型变量x和y
byte z=Convert.ToByte(x+y); //将int型值转换为byte型并赋给byte型变量z
char c=Convert.ToChar(z+20); //将int型值转换为char型并赋给char型变量z
自增++/自减--运算符
当++或--运算符置于变量的左边时,称之为前置运算,表示先进行自增或自减运算再使用变量的值,而当++或--运算符置于变量的右边时,称之为后置运算,表示先使用变量的值再自增或自减运算
例如:设变量i=1、变量j=2,则表达式++i + j-- 的值为4
2. 复合赋值运算符
+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
1. 什么是数组
数组是一种由若干个变量组成的集合,数组中包含的变量称为数组的元素,它们具有相同的类型。
数组元素可以是任何类型,包括数组类型。
数组元素的个数称为数组的长度,数组长度为0时称数组为空数组。
数组元素没有名称,只能通过索引来访问,索引从零开始。
具有 n 个元素的数组的索引是从 0 到 n-1。
C#支持一维数组和多维数组。
2. 数组的声明和创建
C#中的数组是一个对象,所以使用new运算符来创建
声明和创建一维数组的一般形式:
数组类型[ ] 数组名 = new 数组类型[数组长度];
如:int[ ] numbers=new int[5]; //创建具有5个元素的一维数组numbers
数组类型[逗号列表] 数组名 = new 数组类型[数组长度列表]
如:int[,,] numbers=new int[5,4,3]; //创建一个三维数组numbers
3. 数组的初始化
(1)在创建数组时初始化
创建一维数组时初始化的一般形式为:
数组类型[ ] 数组名 = new 数组类型[数组长度]{初始值列表};
如: int[ ] numbers=new int[ ]{1,2,3,4,5} ;//当省略数组长度时,则给出的数据个数即为数组长度
在创建并初始化数组时,还可采用简写形式:
数组类型[ ] 数组名 ={初始值列表}
如int[ ] numbers={1,2,3,4,5} ;
(2)在声明一维数组后初始化数组
在声明后初始化一维数组的一般形式为:
数组类型[ ] 数组名;
数组名 = new 数组类型[数组长度]{初始值列表};
如: int[ ] numbers;
numbers = new int[ ]{1,2,3,4,5} ;
int[ ] numbers;
numbers = {1,2,3,4,5} ;
4. 数组的使用:
每个数组元素相当于一个普通变量,使用数组元素的一般形式为:
数组名[索引]
C#的数组类型是从抽象基类型System.Array派生的引用类型, System.Array类提供的Length属性可以用来获得数组的个数。
另外System.Array提供了Clear、CopyTo、Find、Resize、Sort等方法,用于清除数组元素的值、复制数组、搜索数组、更改数组长度和对数组元素排序等。
5.System.String与 System.Text.StringBuilder
C#的string 是.NET Framework中System.String 的别名,可创建不可变的字符串。其提供的常用属性和方法有Length、Copy、IndexOf、LastIndexOf、Insert、Remove、Replace、Split、Substring、Trim等,分别用来获得字符串长度、复制字符串、从左查找字符、从右查找字符、插入字符、删除字符、替换字符、分割字符串、取子字符串、压缩字符串的空白等。
System.Text.StringBuilder类用来构造可变字符串,包含Length、Append、Insert、Remove、Replace、ToString等成员,分别用来获得字符串长度、追加字符、插入字符、删除字符、替换字符和将StringBuilder转换为string字符串。
对象(Object),是问题域中某些事物的一个抽象,反映事物在系统中需要保存的必要信息和发挥的作用,是包含一些特殊属性(数据)和服务(行为方法)的封装实体。
具体来说,对象应有唯一的名称、有一系列状态(表示为数据)、有表示对象行为的一系列行为(方法),如右图所示。
对象=数据+动作(方法/操作)
1. 事件(Event)
又称消息(Message)表示向对象发出的服务请求。
2. 方法(Method)
表示对象能完成的服务或执行的操作功能。
类(Class)是具有相同属性和服务的一组对象的集合
类为属于同类的所有对象提供统一的抽象描述。其中,相同的属性是指定义形式相同,不是指属性值相同。
对象是类的一个实例。
类与实例的关系是抽象与具体的关系,类是多个实例的综合抽象,实例是类的个体实物。
面向对象的最基本的特征是封装性、继承性和多态性:
1. 封装
封装就是指把对象的全部属性和全部服务结合在一起形成一个不可分割的独立单位。
封装是一种信息隐蔽技术,用户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。
封装的目的在于将对象的使用者与设计者分开,使用者不必了解对象行为的具体实现,只需要用设计者提供的消息接口来访问该对象。
例如,各种有标准视频接口的设备都可以连接电视机。
2.继承
特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承,即在特殊类中不必重新定义已在一般类中定义过的属性和服务,这种特性在面向对象中称作对象的继承性。
继承在C#中称为派生,其中,一般类称为基类或父类,特殊类称为派生类或子类。
例如灵长类动物称为一般类,具有属性包括手和脚(其它动物没有),具有的服务是抓取东西(其它动物没有),人类作为特殊的灵长类高级动物,除了继承灵长类动物的所有属性和服务外,还具有特殊的服务(创造工具)。
继承机制的优势在于降低了软件开发的复杂性和费用,使软件系统易于扩充
3. 多态
多态性是指在基类中定义的属性或服务被派生类继承后,可以具有不同的数据类型或表现出不同的行为。
为了实现多态性,需要在派生类中更改从基类中自动继承来的数据类型或方法。
这种为了替换基类的部分内容而在派生类中重新进行定义的操作,在面向对象概念中称之为覆盖。
例如,假设机动车类是一个基类,它具有一个称为更换轮胎的方法,但是当从机动车派生火车类时,火车更话车轮的方法与一般的机动车不同,于是只能通过覆盖的方法在火车类中重新定义一个更换车轮的方法,以替换其基类的方法。
多态性的优势在于使软件开发更加方便,增加程序的可读性。
クラスの定数メンバーはシンボリック定数であり、アクセス修飾子として public、private、internal、protected、および protected external を指定する必要があります。
アクセス修飾子を使用して名前空間、構造体、クラス、およびそれらのメンバーを定義する場合は、次の点に注意してください:
(1) 保護された内部組み合わせを使用する場合を除き、メンバーまたは型は 1 つのアクセス修飾子のみを持つことができます。
(2) アクセス修飾子は名前空間では許可されず、名前空間に対するアクセス制限はありません。
(3) アクセス修飾子が指定されていない場合は、デフォルトのアクセシビリティが使用され、クラスのメンバーはデフォルトでプライベートになります。
(4) 最上位の型 (他の型にネストされていない型) のアクセシビリティは、内部またはパブリックのみにすることができ、デフォルトのアクセシビリティは内部です。
メソッド定義の詳細説明
(1) アクセス修飾子はメソッドのアクセスレベルを制御します: public、protected、private、internal など。
(2) メソッドの戻り値の型は、値の型や参照型を含む、任意の正当なデータ型にすることができます。戻り値がない場合、戻り値の型は void キーワードで表されます。
(3) メソッド名は、変数名の命名規則と同じ C# の命名規則に準拠する必要があります。
(4) パラメータリストは、メソッドが受け入れることができる入力データです。メソッドにパラメータが必要ない場合、パラメータ リストは省略できますが、括弧は省略できません。複数のパラメータがある場合は、区切りとしてカンマを使用する必要があり、これらのパラメータのデータ型が同じであっても、各パラメータでデータ型を宣言する必要があります。
(5) 中括弧 {} 内の内容はメソッドの本体であり、複数のステートメントで構成されます。各ステートメントはセミコロンで終わる必要があります。メソッド終了時に演算結果を返す必要がある場合は、
return
ステートメントを使用して返します。このとき、returnステートメントで返される値の型はメソッドの戻り値の型と一致する必要があることに注意してください。メソッドが void としてマークされており、戻り値がない場合は、return ステートメントを省略できます。 1. 値型パラメータ
値型パラメータを渡すために方向メソッドを呼び出すとき、呼び出し元は、実パラメータ変数の値を対応する仮パラメータ変数、つまり実パラメータ変数と仮パラメータ変数に割り当てます。は 2 つの異なる変数です。
実パラメータ変数の値が仮パラメータ変数に渡されるとき、それは一方向の値の転送です。
参照パラメータ
値パラメータとは異なり、呼び出し方向メソッドが参照型パラメータを渡すと、呼び出し元は実パラメータ変数の参照を対応する仮パラメータ変数に割り当てます。実パラメータ変数の参照はデータ値のメモリ アドレスを表すため、仮パラメータ変数と実パラメータ変数は同じ参照を指します。
仮パラメータ変数が参照するデータ値がメソッド内で変更されると、実パラメータ変数が参照するデータ値も変更されます。
return ステートメントは一度に 1 つのデータしか返せないため、複数のデータを返す必要がある場合は、参照パラメーターのこの機能を使用してそれを実現できます。
C# は、ref キーワードを通じて参照パラメータを宣言します。それが仮パラメータであっても実パラメータであっても、データへの参照を転送したい場合は、ref キーワードを追加する必要があります。
出力パラメータ
メソッド内の return ステートメントは 1 つの演算結果のみを返すことができますが、参照パラメータを使用して計算結果を返すこともできますが、最初に実際のパラメータを初期化する必要があります。
出力パラメータは実パラメータを初期化する必要はありません。これは、メソッド内のデータを仮パラメータを通じて実パラメータに返すために特別に使用されますが、実パラメータの値は仮パラメータには渡されません。メソッド内では複数の出力パラメータが許可されます。
C# は、出力パラメータが仮パラメータであっても実パラメータであっても、out キーワードを使用して宣言します。出力パラメータである限り、out キーワードを追加する必要があります。
配列型パラメータ
配列をパラメータとして使用するには、2 つの使用形式があります:
1 つは、仮パラメータ グループの前に params 修飾子を追加しない方法です。
もう 1 つは、仮パラメータ グループの前に params 修飾子を追加する方法です。
2 つの形式の違い
params 修飾子が追加されていない場合、対応する実際のパラメータは配列名である必要があります。
params 修飾子を追加する場合、対応する実際のパラメータは配列名または配列要素値のリストになります。
どの形式が使用されても、仮パラメータグループは配列の長さを定義できないことに注意してください。
メソッド
オーバーロード
メソッドのオーバーロードとは、同じ型で同じ名前の 2 つ以上のメソッドを宣言することを指します。 メソッドのオーバーロード
は、異なるパラメーター リストを使用して同じ操作を実行する必要がある場合に役立ちます。 2.
デストラクター
の特徴: (1) デストラクターは構造体で定義できません。クラスにはデストラクターのみを使用できます。(3) デストラクターは継承できません。またはオーバーロードされています。
(4) デストラクターには修飾子もパラメーターもありません。
(5) デストラクターが呼び出されると、.Net Framework の CLR はクリーンアップする基本クラス Object .
Final
ize メソッド呼び出しのサポートを自動的に追加します。したがって、Object.Finalize メソッドの呼び出しをデストラクターに含めることはできません。
デフォルトでは、コンパイラーは空のデストラクターを自動的に生成するため、C# では空のデストラクターを定義できないことに注意してください 1. staticクラスの定義:
staticクラスはstaticキーワードを使用して宣言され、静的メンバーのみが含まれていることを示します。
new キーワードを使用して静的クラスのインスタンスを作成することはできません。実際のアプリケーションでは、クラスのメンバーが特定のオブジェクトに関連付けられていない場合、静的クラスとして作成できます。
2. 静的クラスの主な機能:
(1) 静的クラスには静的メンバーのみが含まれます。
(3) 静的クラスはインスタンスを含めることはできません。
コンストラクター
。
3. 静的クラスの利点: (1) コンパイラーは、インスタンスのメンバーが追加されていないことを確認するためのチェックを自動的に実行できます。
(2) 静的クラスでは、オブジェクトを作成する必要がないため、プログラムの実装がより簡単かつ高速になります。
はそのメソッドを呼び出すことができます。
注: 静的クラスはシールされているため、継承できません。さらに、静的クラスにはインスタンス コンストラクターを含めることはできませんが、静的コンストラクターを宣言して初期値を割り当てたり、静的な状態を設定したりすることはできます。
(1)派生クラスの特徴は独自のメンバーを持つことができます。 メソッド、フィールド、プロパティ、イベントを含むすべてのメンバーは、プライベートメンバー、コンストラクター、デストラクターなどを除き、基本クラスから暗黙的に継承できます。
派生クラスは 1 つのクラスからのみ継承できます
シールされたクラス
シールされたクラスを使用すると、クラスのコードが他のクラスに継承されるのを防ぐことができます
シールされたクラスを使用する利点:
アプリケーションの信頼性とパフォーマンスを向上させることができます (. NET Framework 共通言語ランタイム CLR では、シールされたクラスのロード時にシールされたクラスのメソッド呼び出しが最適化されます。
ソフトウェア会社は、シールされたクラスを使用して他者がコードを共有することを防ぐことで、自社の知的財産権を保護することもできます。
C# では、キーワード sealed を追加して、sealed クラスを宣言します。
4. 派生クラスを使用して基本クラスのデータと動作を変更するために、C# には 2 つのオプションがあります。基本メンバーを新しい派生クラス メンバーで置き換えます 2. 仮想基本メンバーをオーバーライドします
virtual と override を使用するときは、次の点に注意してください:
(1) フィールドを仮想にすることはできません。仮想にすることができるのはメソッド、プロパティ、イベント、およびインデクサーのみです
(2) virtual 修飾子を使用した後、static、abstract、または override 修飾子は使用できません。
(3) 派生クラス オブジェクトが強制的に基本クラス オブジェクトに変換された場合でも、参照は派生クラス オブジェクトのままです。 class Members;
(4) 派生クラスは、sealed オーバーライドを使用して仮想継承を停止できます。
抽象クラスの特徴
:
抽象クラスは基本クラスとして使用され、直接インスタンス化できず、abstract キーワードを使用してのみ識別できます。抽象クラスの目的は、複数の派生クラスで共有できる基本クラスの共通定義を提供することです。
抽象クラスには、抽象プロパティや抽象メソッドなどの抽象メンバーだけでなく、非抽象メンバー、さらには仮想メソッドも含めることができます。 抽象属性の特徴 クラスの属性メンバーに抽象キーワードを追加すると、抽象属性になります。
抽象プロパティ宣言はプロパティ アクセサーの実装を提供せず、クラスによってサポートされるプロパティを宣言するだけであり、アクセサーの実装は派生クラスに残ります。
抽象プロパティは、読み取り専用、書き込み専用、または読み取り/書き込みプロパティにすることもできます。
派生クラスが抽象クラスから抽象プロパティを継承する場合、派生クラスは抽象プロパティをオーバーライドする必要があります。
抽象属性は、abstract キーワードを使用して識別されます。
抽象メソッドの特徴:
クラスのメソッド メンバーに abstract キーワードを追加すると、それらは抽象メソッドになります。
抽象メソッド宣言はメソッドの実装を提供しません。メソッドの実装は派生クラスに任せ、空のメソッドでなければなりません。
派生クラスが抽象クラスから抽象メソッドを継承する場合、派生クラスは抽象メソッドをオーバーライドする必要があります。
抽象メソッドが実装されていないため、抽象メソッドには通常のメソッド本体が含まれず、セミコロンで終わります。
1. デリゲートは参照メソッドの一種で、クラス、インターフェース、配列と同じで参照型に属します。
C# プログラムでは、デリゲート型の宣言、デリゲート型の変数の定義、デリゲート変数へのメソッドの割り当て、デリゲートを介して 1 つ以上のメソッドを間接的に呼び出すことができます。
メソッドがデリゲートに割り当てられると、デリゲートはそのメソッドとまったく同じように動作します。
C# では、同じシグネチャ (同じ戻り値とパラメーター) を持つ任意のメソッドをデリゲート変数に割り当てることができます。デリゲートの本質は、メソッドを表す参照 (つまり、メモリ アドレス) であり、コールバック メソッドを定義するための理想的な選択肢であり、C# がイベント駆動型プログラミング モデルを実装するための主な方法でもあります。
デリゲートには次の特徴があります:
(1) デリゲートはC++の
関数ポインタ
に似ており、完全にオブジェクト指向で安全なデータ型です。
(2) デリゲートを使用すると、メソッドをパラメータとして渡すことができます。 (3) デリゲートを使用してコールバック メソッドを定義できます。 (4) デリゲートは相互にリンクできます。たとえば、イベントに対して複数のメソッドを呼び出すことができます。
(5) デリゲートの署名はメソッドと正確に一致する必要はありません。
コレクションは、任意のオブジェクトを高度に構造化された方法で格納するクラスです。動的にサイズを変更できない配列と比較して、コレクションは自由にサイズを変更できるだけでなく、コレクションに格納されているオブジェクトを格納または取得するためのより高度なメソッドも提供します。
コレクションは、類似した型のオブジェクトのグループをグループ化できます。
コレクション クラスを選択するときは、一般に次の問題を考慮します。
(1) シーケンス リストが必要かどうか。先入れ先出しの動作が必要な場合は、Queue キュー クラスを使用できます。 -out 動作が必要な場合は、Stack クラスを使用できます。
(2) コレクション内の要素にランダムにアクセスする必要があるかどうかにかかわらず、Queue キュークラス、Stack スタッククラス、LinkedList 二重リンクリストクラスは選択できません。
(3) インデックスを介して各要素にアクセスする必要がありますか? ArrayList 動的配列クラス、StringCollection 文字列コレクション クラスなどだけが、インデックス 0 の要素から開始してコレクション要素に 1 つずつアクセスします。 Hashtable ハッシュ テーブルと Dictionary 辞書クラスは、要素のキー (つまり、要素名) を介して要素へのアクセスを提供します。 NameValueCollection クラスと SortedList ジェネリック クラスは、要素の 0 から始まるインデックス、または要素のキーを通じて要素へのアクセスを提供します。
(4) 値、キーと値のセット、または 1 つのキーと複数の値のセットが含まれるかどうか。このうち、「1 つの値」のコレクションは IList リスト インターフェイスに基づいて導出されたコレクション、「1 つのキーと 1 つの値」のコレクションは IDictionary 辞書インターフェイスに基づいたコレクション、「1 つのキーと複数の値」のコレクションは値」は、NameValueCollection の種類です。
(5) 要素を入力要素とは異なる方法で並べ替える必要があるかどうか。 Hashtable ハッシュ テーブル クラスは、ハッシュ コードに従って要素を並べ替えます。SortedList 順序付きリスト クラスと SortedDictionary 順序付き辞書は、IComparer 同等のインターフェイスに従ってキーによる要素の並べ替えを実装し、ArrayList 動的配列クラスは Sort 並べ替えメソッドを提供します。
(6) 情報の高速な検索と取得が必要な場合でも、小さなコレクション (10 要素以下) の場合、ListDictionary は Hashtable よりも高速であり、SortedDictionary ジェネリック クラスは Dictionary ジェネリック クラスよりも高速な検索を提供します。
(7) StringCollection や StringDictionary などを使用するなど、文字列のコレクションのみを受け入れる必要がありますか?
動的配列クラス ArrayList は要素の数とデータ型を制限しません。
(1) ArrayList と Array の違い
Array のサイズは固定ですが、ArrayList のサイズは必要に応じて自動的に拡張できます。
Array では一度に 1 つの要素の値しか取得または設定できません。 ArrayList では、追加と挿入が許可されます。または、特定の範囲の要素を削除できます。
ArrayList の下限は常に 0 ですが、ArrayList は常に 1 次元です。は System 名前空間にあり、ArrayList は System.Collections 名前空間にあります。
(2) 動的配列の作成:
ArrayList リストオブジェクト名 = new ArrayList(?);
キューの特徴
オブジェクトを挿入または削除する場合、オブジェクトは 1 つから挿入されます。キューの端ともう一方の端を削除します。
キュー オブジェクトを作成します。
キュー キュー名 = new Queue([キューの長さ][, 成長係数]);
説明、キューの長さはデフォルトで 32 です。係数のデフォルトは 2.0 (つまり、キューの容量が不十分な場合は常に、キューの長さは元のサイズの 2 倍に調整されます)
キューのサイズの調整には一定のパフォーマンス コストが必要なため、キューを構築するときのキューの長さ。一般的なキュー操作メソッドには、キューの最後にデータを追加する Enqueue、キューの先頭からデータを削除する Dequeue、キューの先頭からデータを返す Peek、キューを空にする Clear、および次の内容を確認する Contains が含まれます。あるデータが入っています。このうち、Enqueue と Dequeue は一度に 1 つのデータのみ追加または削除できます。
スタックの特徴:
先入れ後出しのデータ構造。オブジェクトを挿入または削除する場合、このデータ構造はスタックの先頭でのみ挿入または削除できます。
スタック オブジェクトを作成します:
スタック スタック名 = new Stack(?);
一般的なスタック メソッドには、スタックの先頭にデータを追加する Push、スタックの先頭データを削除する Pop、スタックの先頭データを返す Peek が含まれます。スタック、Clear はスタックをクリア、Contain は特定のデータなどを確認します。このうち、Push と Pop は一度に 1 つのデータしか追加または削除できません。
ハッシュ テーブルとも呼ばれるハッシュ テーブルは、キーと値のペアのコレクションを表します。
ハッシュテーブルの特徴: コレクション要素を保存するとき、キーに基づいてハッシュコードを自動的に計算して要素の保存場所を決定し、要素の値を対応するオブジェクトが指すバケットに配置する必要があります。位置。検索する場合は、キーに対応するハッシュコードで特定のバケット内を再検索します。これにより、要素を見つけるために必要な比較の数が大幅に減少します。
ハッシュテーブルオブジェクトを作成します
Hashtable ハッシュテーブル名 = new Hashtable([ハッシュテーブルの長さ][, 成長率]);
説明、デフォルトの長さは 0、デフォルトの成長率は 1.0 です
ハッシュ テーブルの一般的な操作方法には、データを追加する Add、データを削除する Remove、ハッシュ テーブルをクリアする Clear、特定のデータが含まれているかどうかを確認する Contains などがあります。このうち、Add メソッドには 2 つのパラメータが必要で、1 つはキー、もう 1 つは値です。Remove メソッドには 1 つのキー パラメータのみが必要です。
インターフェイス インデクサーとクラス インデクサーには 2 つの違いがあります:
第一に、インターフェイス インデクサーは修飾子を使用しません。
第二に、インターフェイス インデックスにはアクセサー get または set のみが含まれ、実装ステートメントは含まれません。
カスタム ジェネリック クラスを作成するときは、次の点に特別な注意を払う必要があります:
(1) どの型を型パラメータとして一般化する必要がありますか?
一般的なルールは、パラメータ化できる型が多いほど、より柔軟で再利用可能です。コードはより良いものになりますが、一般化しすぎると、他の開発者がコードを読んだり理解したりすることが困難になる可能性があります。
(2) 制約がある場合、型パラメータにどのような制約を適用するか
一般的なルールは、できるだけ多くの制約を適用しますが、処理する必要のある型を処理できるようにすることです。たとえば、ジェネリック クラスが参照型にのみ使用されることがわかっている場合は、クラス制約を適用します。これにより、ジェネリック クラスが誤って値の型に使用されるのを防ぎます。
(3) ジェネリックの動作を基底クラスとサブクラスに分解するかどうか
ジェネリッククラスは基底クラスとして使用できるため、注意事項は非ジェネリッククラスと同様です。
(4) 1 つ以上の汎用インターフェイスを実装するかどうか。
イベント処理システムのコンポーネント
(1) イベント ソース: イベントをトリガーできるオブジェクトを指し、イベントの送信者またはイベント発行者とも呼ばれます。
(2) リスナー:イベントを受信できるオブジェクト メッセージ オブジェクト。Windows は基本的なイベント リスニング サービスを提供します。
(3) イベント ハンドラー: イベントが発生したときにイベントを処理します。イベント関数またはイベント メソッドとも呼ばれます。イベント ハンドラーを含むオブジェクトはイベント レシーバーと呼ばれます。 、イベントのサブスクライバーとしても知られています。
C# のイベントには次の特徴があります:
(1) イベントは、クラスが特定の操作を実行する必要があることをオブジェクトに通知する方法です。
(2) イベントは他の場合 (信号状態の変化など) にも役立ちます。これらは通常、グラフィカル ユーザー インターフェイスで使用されます。
(3) イベントは通常、デリゲート イベント ハンドラーを使用して宣言されます。
(4) イベントはデリゲートの代わりに匿名メソッドを呼び出すことができます。
1. イベントの基本概念
イベントをトリガーするオブジェクトはパブリッシャーと呼ばれ、イベント ハンドラーを提供するオブジェクトはサブスクライバーと呼ばれます。 .NET Framework では、イベント駆動型プログラムはデリゲートを使用してイベントとイベント関数をバインドします。C# では、イベントは実際にはデリゲート型変数です。
C# では、組み込みの EventHandler デリゲート型を使用して標準イベントを宣言できます。また、最初にデリゲートをカスタマイズしてからカスタム イベントを宣言することもできます。
.NET Framework では、組み込みの EventHandler デリゲートには 2 つのパラメーターがあり、そのデータ型は Object 型と EventArgs 型で、戻り値はありません。
通常、Object パラメーター名は sender で、イベント発行者自体を表します。EventArgs パラメーターは通常 e で、System.EventArgs クラスの新しいインスタンスをイベント関数に渡します。実際のプログラミングでは、パブリッシャーがレシーバーのイベント関数に特定のデータを送信できるように、EventArgs クラスからカスタム イベント パラメーター クラスを派生することが必要になる場合があります。
イベントの宣言
(1) 組み込みの EventHandler デリゲートを使用してイベント (標準イベント) を宣言します。
形式: public event EventHandler イベント名
ここで、イベント名は通常、接頭辞として on を使用します。
例: public イベント EventHandler onClick;
(2) カスタム デリゲート型を使用してイベントを宣言します
形式: public delegate return value type delegate type name ([parameter]);
public eventカスタム デリゲート タイプ
を使用して、デリゲート型のパラメータは非常に柔軟であり、標準の Object パラメータや EventArgs パラメータ、またはその他のパラメータを使用できます。ただし、イベント 関数のパラメータと一致するように注意する必要があります。 イベントをサブスクライブする際には、以下の点を必ず把握してください:
(1) まず、受信側クラスにはイベント自体と同じシグネチャ(戻り値の型とパラメータが同じ)を持つメソッドが必要であり、次にメソッド(メソッドと呼ばれます)が必要です。イベント ハンドラー) は、イベントに応答するために適切なアクションを実行できます。
(2) 各イベントには複数のハンドラーを含めることができ、複数のハンドラーが順番に呼び出されます。ハンドラーが例外をスローした場合、まだ呼び出されていないハンドラーはイベントを受け取る機会がありません。このため、イベント ハンドラーはイベントを迅速に処理し、例外のスローを避けることをお勧めします。
(3) イベントをサブスクライブするには、受信者はイベントと同じ型のデリゲートを作成し、イベント ハンドラーをデリゲート ターゲットとして使用し、
加法代入演算子 (+=) を使用してソースにデリゲートを追加する必要があります。 ) オブジェクトのイベント。 (4) イベントのサブスクライブを解除するには、受信者は減算代入演算子(?=) を使用して、ソース オブジェクトのイベントからイベントハンドラーのデリゲートを削除できます。
1. Windows フォーム
Windows フォームは、C# を使用してウィンドウ ベースのアプリケーションを構築するための出発点です。ただし、フォーム自体の観点から見ると、それは単なる可動インターフェイスにすぎません。ユーザーはフォーム上にオブジェクトやテキストを直接描画できますが、フォームの本当の役割は、Windows コントロールのコンテナとして機能することです。
コントロールの本質は、情報を表示し、ユーザーが入力した情報を受け取るために使用されるフォームのメンバー オブジェクトです。
2. Windows フォームの基本クラスは、System.Windows.Forms 名前空間で定義された
Form です。 .NET のほとんどのコントロールは、System.Windows .Forms.Control クラスから派生します。 、コントロールの基本機能を定義します。
.NET Framework のフォーム コントロール
データ表示
DataGridView
データ バインディング 配置 BindingSource、BindingNavigator テキスト編集
TextBox、RichTextBox、MaskedTextBox 情報表示
Lable、StatusStrip、バーWebページの表示
WebBrowserリストと選択 CheckBox、CheckedListBox、ComboBox、RadioButton、ListBox、ListView、NumericU
pDown、TreeView、DomainUpDown、TrackBar、グラフィック表示
PictureBox、ImageList日付設定
Date時間ピッカー、月カレンダーダイアログ
ColorDialog、FontDialog、OpenFileダイアログ、Printダイアログ、PrintPreviewダイアログ、FolderBrowerダイアログ、Save FileダイアログComman d
ボタン、リンクラベル、非ifyIcon、ToolStripMenu
MenuStrip、ContextMenuStripユーザーヘルプ
HelpProvider、ToolTrip他のコントロールをグループ化
Panel、GroupBox、TabControl、SplitContainer、TableLayoutPanel、FlowLayoutPane プロパティコントロールのプロパティ 名前
説明Anchor
コントロールがバインドされているコンテナの端を取得または設定し、親に合わせてコントロールのサイズを変更する方法を決定します BackColor
コントロールの背景色Bottom
コントロールの下端とその親コンテナ クライアント領域の上端間の距離 (単位: ピクセル) Dock
親コントロールにドッキングされたコントロールの境界線を取得または設定し、コントロールが親に合わせてサイズ変更する方法を決定します Enabled
コントロールが応答できるかどうかユーザーインタラクションForeColor
コントロールの前景色Height
コントロールの高さLeft
コントロールの左端とそのクライアント領域の左端の間の距離コンテナー (単位: ピクセル)場所
コントロールの左上隅 コンテナーの左上隅を基準とした座標。 名前
コントロールの名前。この名前は、コード内でコントロールを参照するために使用できます。 親
コントロールの親コンテナ右
コントロールの右端とそのコンテナのクライアント領域の左端の間の距離(単位:ピクセル)サイズ
高さとコントロールの幅TabIndex
コントロールの Tab キー TabStop
の順序は、ユーザーが Tab キーを使用してコントロールにフォーカスを置くことができるかどうかを示します。 Text このコントロールに関連付けられたテキスト
Top コントロールの上端とそのコンテナのクライアント領域の上端の間の距離(単位:ピクセル)
Visible コントロールが表示されるかどうかを示します
Width コントロールの幅
ButtonControl
Button (ボタン) コントロールは、.NET Framework の System.Windows.Forms 名前空間にあり、基本クラス ButtonBase から派生します。基本クラス ButtonBase は、ボタン コントロールに必要な基本操作を実装するために使用されます。
ボタン コントロールは、ユーザーが「OK」または「キャンセル」などの選択を要求される場合によく使用されるコントロールです。 Button コントロールはマウスのクリックとダブルクリックの操作をサポートしており、
デザインするときは、通常、フォームにコントロールを追加し、それをダブルクリックして、Click イベントのコードを記述します。プログラムの実行時にボタンをクリックすると、Click イベント内のコードが実行されます。
Name 属性: コード内で参照するオブジェクトの名前を設定するために使用されます。
システムはボタン コントロールに自動的に button1、button2...という名前を付けます。
Name プロパティには意味のある名前を設定することをお勧めします。
さまざまなコントロール オブジェクトの Name プロパティは、[プロパティ] ウィンドウからのみ変更できます。このプロパティは設計時に有効で、実行時には読み取り専用です。
テキスト属性: ボタンにテキスト形式で表示されるタイトルテキスト。
ボタンをクリックするだけでなく、ボタンに「Alt+ショートカットキー」を定義することもできます。P155の図7-2を参照してください。
メソッドを定義し、ショートカットキー文字の前に「&」文字を追加します。
例: button1.Text = "OK (&Y)"; //表示タイトルは「OK (Y)」です
Visible 属性: ボタンが表示されるかどうかを決定します
属性値は、表示される場合は true、表示される場合は false隠れた。
コントロールが非表示の場合、ユーザーのマウスやキーボードの操作に応答できません。
Visible プロパティは実行時に有効になります。
Enabled 属性: ボタンが有効かどうかを決定します。
属性値が false の場合、ボタンのテキストは灰色で表示され、ユーザーの操作に応答しません。
FlatStyle 属性: ボタンのスタイルを決定します。値は FlatStyle 列挙型です。
FlatStyle 列挙型には、Flat (フラット ディスプレイ)、Popup (フラット ディスプレイ) の 4 つの列挙値がありますが、マウスを置いたときの外観は 3 次元です。移動)、スタンダード(3次元表示)、システム(見た目はオペレーティングシステムによって決まります)の場合、その効果はP156の図7-3に示されています。
Button コントロールの FlatStyle プロパティのデフォルトは Standard です。
Imageプロパティ:ボタンに表示する画像を指定します
ImageAlignプロパティ:ボタン上の画像の配置を設定します
Labelコントロール
機能:主にフォーム上にテキストを表示するために使用されます
コントロール名:
Label:Windows標準のラベル;
LinkLabel: ラベルに似ていますが、ハイパーリンクの形式で表示されます。その効果を図 7-4 に示します。
通常、ラベル コントロールにイベント処理コードを追加する必要はありませんが、必要に応じてイベントもサポートできます
ラベル コントロールの共通プロパティ
プロパティ名 説明
BorderStyle コントロールの境界線のスタイル、デフォルトはボーダーレスです
FlatStyle フラットスタイルの外観を設定します。 PopUp に設定すると、フラット スタイルを意味し、マウスでポイントすると、コントロールがポップアップ スタイルで表示されます。
Image Labelに表示される画像
ImageAlign コントロールに表示される画像の配置
LinkArea リンクとして表示されるテキストの範囲(LinkLabelのみ)
LinkColor 通常表示する際に使用する色links (LinkLabel のみ)
Links LinkLabel に含まれるリンクのコレクションを取得する (LinkLabel のみ)
LinkVisited リンクが訪問済みリンクとして表示されるかどうか (LinkLabel のみ)
TextAlign? テキストの配置ラベル内
VisitedLinkColor 以前に訪問したリンクを表示するときに使用される色 (LinkLabel のみ)
テキスト ボックス コントロール
.NET FrameWork には、TextBox コントロールと RichTextBox コントロールという 2 つの組み込みテキスト ボックス コントロールがあり、どちらも TextBoxBase から派生しています。 Control クラスから派生します。
TextBoxBase は、テキストの選択、切り取り、貼り付け、関連イベントなど、テキスト ボックス内のテキストを処理するための基本的な機能を提供します。
TextBox は主にユーザーがテキストを入力できるようにするために使用されます。数値のみを許可するなど、ユーザーが入力する文字の種類を指定することもできます。デフォルトでは、テキスト ボックスには最大 2048 文字を入力できます。 Multiline プロパティを true に設定すると、最大 32,000 個のテキストを入力できます。ユーザーのテキストは Text プロパティに格納され、プログラム内で Text プロパティを参照することでユーザーが入力したテキストを取得できます。 RichTextBox は主に、書式設定されたテキストの表示と入力に使用されます (TextBox は、短いテキスト文字を入力するためによく使用されます)。RichTextBox は、フォント、色、リンクを表示したり、ファイルからテキストを読み込んだり、埋め込まれた画像を読み込んだり、指定された文字を検索したりすることもできます。強化されたテキストボックス。
TextBoxコントロール
プロパティ名 説明
CausesValidation? ユーザー入力の有効性を検証するかどうか
CharacterCasing 入力時に文字の大文字と小文字の形式を変更するかどうか
MaxLength?入力可能な文字、=0の場合は制限なしMultiline
複数行テキストの表示可否PasswordChar
パスワード表示文字の設定ReadOnly?
テキストが読み取り専用かどうかScrollBars
Getまたは、どのスクロール バーを複数行に表示するかを設定します。 TextBox コントロールで、SelectedText?
は現在選択されているテキストを表します SelectionLength?
現在選択されている文字数SelectionStart?
現在選択されているテキストの開始点 Text
現在のテキストWordWrap
? 自動的に折り返すかどうか?イベント名
説明Enter?
コントロールに入ったときに発生します これら 4 つのイベントは、リストされている順序でトリガーされます。イベント」であり、コントロールのフォーカスが変化するとトリガーされますが、Validating と Validated は、コントロールがフォーカスを受け取り、その CausesValidation が true に設定されている場合にのみトリガーされますLeave?
入力フォーカスがコントロールから離れるときに発生します Validating?
コントロールが検証中に発生します Validated?
コントロールが検証を完了したときに発生しますKey
Down これら 3 つのイベントは総称して「キー イベント」と呼ばれ、 KeyDown と KeyUp? は、押されたキーに対応するキー コードを受け取り、Shift、Ctrl、F1 などの特殊なキーが押されたかどうかを判断します。 KeyPress はキーに対応する文字を受け取りますKeyPressKeyUp?
TextChanged?
テキスト ボックス内のテキストが変更されるたびにこのイベントがトリガーされますRichTextBox コントロール プロパティ名
DescriptionCanRedo?
RichTextBox 内に示されます発生した操作の中に再適用できる操作があるCanUndo?
ユーザーがテキスト ボックス コントロールで以前の操作を元に戻せるかどうかを示しますDetectUrls
コントロールに URL が入力されると、RichTextBox が URL を自動的にフォーマットするかどうかRtf
Text プロパティに似ていますが、RTF 形式のテキストを含めることができます SelectedRtf
コントロール内で現在選択されている RTF 形式のテキストを取得または設定します SelectedText
RichTextBox 内で選択されたテキストを取得または設定します SelectionAlignment
選択されたコンテンツまたは挿入ポイントの配置 (中央、左、右のいずれか) SelectionBullet?
箇条書きスタイルが現在の選択範囲または挿入ポイントに適用されるかどうかを示します BulletIndent?
箇条書きのインデントを指定します SelectionColor
現在選択されているテキストまたは挿入ポイントのテキストの色を取得または設定します SelectionFont
現在選択されているテキストまたは挿入ポイントのフォントを取得または設定します SelectionLength?
コントロールで選択されている文字を取得または設定します Number ShowSelectionMargin
このプロパティを true に設定すると、テキストの選択を容易にするために、RichTextBox の左側にマージンが表示されますUndoAction
Name Undo メソッドを呼び出した後、コントロール内の取り消し可能な操作を取得します Name SelectionProtected
テキストの特定の部分を変更しないように指定するには、このプロパティを true に設定します RadioButton コントロール プロパティ名
説明Appearance RadioButton の外観を決定する値を取得または設定します。
オプションの値: 標準とボタン。各タイプでは、テキストまたは画像、あるいはその両方を表示できます。
ノーマルを選択した後の外観: 。ボタン選択後の外観:
AutoCheck この属性が true の場合、ユーザーが ラジオ ボタン をクリックすると、チェック マークが表示されます。このプロパティが false の場合、Click イベント ハンドラーのコードでラジオ ボタン
CheckAlign を手動でチェックして、ラジオ ボタンの チェックボックス の配置を変更する必要があります。値は有効な値の 1 つです。 ContentAlignment 列挙体の。デフォルト値は MiddleLeft で、コンテンツが垂直方向に中央に配置され、水平方向に左端に配置されることを意味します。 Checked
コントロールが選択されているかどうかを示す値を取得または設定します。コントロールが選択されている場合は true、それ以外の場合は false GroupBox コントロール
GroupBox (グループ ボックス) コントロールは、他のコントロールに識別可能なグループを提供するために使用されます。 通常、グループ ボックスを使用してフォームを機能ごとに細分化します。
単一の GroupBox コントロールを移動すると、それに含まれるすべてのコントロールも一緒に移動します。
GroupBox コントロールとその内部コントロールをフォーム上に作成する場合は、まず GroupBox コントロールを作成し、次にその中にさまざまなコントロールを作成する必要があります。
Panelコントロール
Panel(パネル)コントロールはGroupBoxコントロールと似ています。 2 つの違いは、GroupBox コントロールのみがタイトルを表示でき、Panel コントロールのみがスクロール バーを持つことができることです。
スクロール バーを表示するには、AutoScroll プロパティを true に設定します。
BackColor、
BackgroundImage、および BorderStyle プロパティを設定することで、パネルの外観をカスタマイズできます。 TabControl コントロール
プロパティ名
説明Alignment
コントロール内のタブの表示位置を制御します。デフォルトはコントロールの上部です。 外観
タブの表示モードを制御します。タブは次のように表示できます。一般的なボタンまたはフラット スタイルのボタンHotTrack
true の場合、マウス ポインターがコントロールのタブ上に移動すると、外観が変わりますMultiline
true の場合、タブを複数の行で表示できますRow
Count 現在表示されているタブの行数を返しますSelectedItem
現在選択されているタブ ページのインデックスを取得または設定しますSelectedTab
現在選択されているタブ ページを取得または設定します。このプロパティは TabPages のインスタンスで使用されます TabCount
タブ ストリップ内のタブの数を取得します。 TabPages
タブ コントロール内のタブ ページのコレクションを取得します。このコレクションを使用して TabPages オブジェクトを追加および削除します。
StatusStrip コントロール内のペインの共通プロパティ
プロパティ名
説明AutoSize
item- であるかどうか。ベースの画像とテキストは、項目のサイズを自動的に調整します。 Alignment
StatusStrip コントロールのペインの配置を設定します。 オプションには次のものが含まれます: Center、Left、Right BorderStyle
ペインの境界線のスタイルを設定します。 None : 境界線を表示しません; Raized : ペインを立体的に浮き上がらせて表示します; Sunken : ペインを立体的に浮き上がらせて表示します Image
ペインに表示されるアイコンを設定しますMinimumSize
ステータスバーのペインの最小幅を設定しますスプリング
アイテムが残りのスペースを満たすかどうかを指定しますテキスト
ペインの表示テキストを設定します幅
の設定に応じて、ペインの幅を設定しますフォームのサイズが変更されるときに使用される AutoSize プロパティ 値は異なる場合があります
Show メソッドはダイアログの戻り値を示す DialogResult 列挙値を返します
Member
Description Abort
ダイアログの戻り値は中止です (通常は「中止」というラベルの付いたボタンから送信されます)?キャンセル
ダイアログ ボックスの戻り値はキャンセルです (通常は「キャンセル」というラベルの付いたボタンから送信されます)?無視
ダイアログ ボックスの戻り値はは無視します (通常は「無視」というラベルの付いたボタンから送信されます) ?いいえ
ダイアログの戻り値はいいえです (通常は「いいえ」というラベルの付いたボタンから送信されます)?None ダイアログからは何も返されませんでした。これは、モーダル ダイアログ ボックスが引き続き実行されていることを示します?
OK ダイアログ ボックスの戻り値は OK (通常は「OK」というラベルの付いたボタンから送信されます)
Retry ダイアログ ボックスの戻り値は Retry (通常は
Yes ダイアログ ボックスの戻り値は Yes です (通常、「Yes」ボタンから送信されます)?
Driver
.NET Framework は、DriveInfo クラスと DriverType を提供します。列挙型をプログラム内で直接ドライバを使用すると便利です。 DriveInfo クラスと DriverType 列挙は System.IO 名前空間にあります。
DriveInfo クラス
役割: ドライブ文字、ドライブの種類、ドライブ上の空き容量など、ドライブに関する情報を決定します。
共通メンバー:
フィールド: DriveFormat (NTFS や FAT32 などのファイル システム形式) 、DriveType (ドライブの種類)、Name (ドライブ名)、TotalSize (総容量)、TotalFreeSpace (利用可能な容量)
メソッド: GetDrives (利用可能なドライブのリストを取得)
perType 列挙型
列挙値には CDRom (光学ドライブ) が含まれます)、固定 (ハードディスク) )、ネットワーク (ネットワーク ドライブ)、リムーバブル (フロッピー ディスクまたは U ディスク) など。 。 Directory クラスと DirectoryInfo クラスは System.IO 名前空間にあり、ディレクトリの作成、コピー、移動、削除に使用できます。
Directory クラス
特徴: 静的クラス。そのメソッド メンバーは直接呼び出すことができますが、呼び出される各メソッド メンバーはセキュリティ チェックを実行してユーザーの操作権限を決定する必要があります。 共通メソッドメンバー: CreateDirectory (新しいディレクトリを作成する)、Delete
(ディレクトリを削除する)、Exists (ディレクトリが存在するかどうかを判断する)、Move (ディレクトリを移動する)、GetFiles (ディレクトリのファイルリストを取得する)、GetDirectories (サブディレクトリのリストを取得する) など。
DirectoryInfo クラス
特徴: 非静的クラス (インスタンス化する必要がある)、メソッド メンバーを呼び出す前にインスタンスを作成する必要があり、インスタンスの作成時にセキュリティ チェックが実行されます。 一般的に使用されるフィールドメンバー; Name (抽出ディレクトリ名)、Exists (存在するかどうか)、Parent (親ディレクトリ)、Root (ルートディレクトリ) 一般的に使用されるメソッドメンバー: Create (ディレクトリの作成)、CreateSubDirectory (サブディレクトリの作成)、Delete (削除) Directory)、MoveTO (ディレクトリの移動)、GetFiles、GetDirectories など。
コードサンプル: P197
File
NET Framework は、プログラム内でのファイルの直接操作を容易にする File クラスと
FileInfo
クラスを提供します。 File クラスと FileInfo クラスは System.IO 名前空間にあり、ファイルの作成、コピー、削除、移動、開くなどの操作に使用できます。
ファイルクラス
特徴: 静的クラス、そのメソッドメンバーを直接呼び出すことができます。 共通のメソッドメンバー: Open (ファイルを開く)、Create (新しいファイルの作成)、Copy (ファイルのコピー)、Delete (ファイルの削除)、Exists (ファイルが存在するかどうかの確認)、Move (ファイルの移動)、 Replace (ファイルを置き換える)、AppendAll
Text (新しいファイルを作成してテキストを追加する)、ReadAllText (テキストコンテンツを開いて読み取る) など。
FileInfo クラス
特徴: 非静的クラス、インスタンスを作成する必要がある初め。 共通フィールドメンバー: Name (抽出されたファイル名)、Directory (ファイルが属するディレクトリ)、Exists (存在するかどうか)、Extension (ファイル拡張子)、Length (ファイルの長さ)、IsReadOnly (読み取り専用ファイルかどうか) ) 共通メソッドメンバー: Open、Create、CopyTo (新しいファイルにコピー)、Delete、MoveTo (ファイルの移動)、Replace、En
Crypt
(ファイルの暗号化)、Decrypt (ファイルの復号化) など。
コード例: P198
パス ファイルの場所はパスと呼ばれます。パスは、ドライブ文字、ディレクトリ名、ファイル名、ファイル拡張子、区切り文字で構成されます。 パスの表現方法
絶対パス: C:WindowsSystem32notepad.exe など、ドライブのルート ディレクトリから書き込みを開始します。
相対パス: System32nodepad.exe など、現在のディレクトリの場所から書き込みを開始します (現在のディレクトリがC:Windows)
C# は、「」文字はエスケープ文字とみなされます。そのため、パスを文字列として表す場合は、2 つのバックスラッシュを使用する必要があります。例:
"C:\Windows\System32\notepad.exe"
C# では、文字列の前に追加できます。「@」記号は、コンパイラに「」文字をエスケープ文字としてではなく、通常の文字として扱うように指示します。例:
@"C:WindowsSystem32notepad.exe"
NET Framework はパスを提供しますプログラム内でファイルとディレクトリのパスを管理するのに役立つクラス。 Path クラスは System.IO 名前空間にあり、静的クラスです。
パスクラス関数: 静的クラス。ドライブ文字、ディレクトリ名、ファイル名、ファイル拡張子、区切り文字など、パスの各フィールドを操作するために使用されます。
パス共通フィールド メンバー: PathSeparator (パス セパレーター)、DirectorySeparatorChar (ディレクトリ セパレーター)、VolumeSeparatorChar (ボリューム セパレーター)
パス共通メソッド メンバー: GetDirecotryName (ディレクトリ名を取得)、GetFileName (ファイル名を取得)、GetExtension (ファイル拡張子を取得) name) 、GetFullPath (フルパスの取得)、GetTempPath (オペレーティングシステムの一時ファイルのパスの取得) など。フローには次の基本的な操作が含まれます。
Read (読み取り): バイト配列への出力など、ストリームから特定のデータ構造へのデータの転送を意味します。
Write (書き込み): あるデータ構造からのデータの出力など、データをストリームに転送することを意味します。バイト配列がストリームに転送されます。
positioning (seek):
クエリ
を示すか、ストリーム内の現在位置を再配置します。
ストリームを操作するクラス(1) StreamクラスStreamクラスは、すべてのストリームの抽象基本クラスです。
Stream クラスの主な属性: CanRead (読み取りが示されるかどうか)、CanSeek (検索がサポートされるかどうか)、CanTimeout (タイムアウトが可能かどうか)、CanWrite (書き込みがサポートされるかどうか)、Length (ストリームの長さ)、
Position
(現在のストリーム内の位置を取得または設定)、ReadTimeout (読み取り操作のタイムアウトを取得または設定)、WriteTimeout (書き込み操作のタイムアウトを取得または設定)
Stream クラスの主なメソッド: BeginRead (開始非同期読み取り操作)、BeginWrite (非同期書き込み操作の開始)、Close (現在のストリームを閉じる)、EndRead (非同期読み取り操作の終了)、EndWrite (非同期書き込み操作の終了)、Flush (ストリームのすべてのバッファーをクリア)バッファリングされたデータを基本デバイスに書き込みます)、Read (バイト シーケンスを読み取ります)、ReadByte (バイトを読み取ります)、Seek (検索位置を設定します)、Write (バイト シーケンスを書き込みます)、WriteByte (バイトを書き込みます)
( 2) StreamReader クラスと StreamWriter クラス 一般 テキスト ファイルの操作に使用されます。 ストリーム リーダー StreamReader クラスは、特定のエンコーディングでバイト ストリームから文字を読み取るために使用されます。
ストリーム ライター StreamWriter クラスは、特定のエンコーディングでストリームに文字を書き込むために使用されます。
(3) FileStream、MemoryStream、BufferStream クラス
ファイルストリーム FileStream クラス: ストリーム形式でファイルの読み取り、書き込み、オープン、クローズを行います。
MemoryStream クラス: データを一時的に保存するためにメモリ内にストリームを作成することを示します。これにより、ハードディスク上に一時ファイルを作成する必要がなくなります。
Cache
Stream BufferStream クラス: まずストリームをバッファに追加し、次に読み取り/書き込み操作を実行すると、データにアクセスする際のオペレーティング システムへの呼び出しの数を減らすことができます。 FileStream クラスにもバッファリング機能があることに注意してください。FileStream クラスのインスタンスを作成するときは、バッファ サイズを指定するだけです。 テキスト ファイルの読み取りと書き込み
テキスト ファイルは、文字のエンコーディングのみを保存する純粋なテキスト データで構成されるファイルです。 NET Framework でサポートされている文字エンコーディングは ASCIIEncoding、UTF7Encoding、UTF8Encoding、UnicodeEncoding、または UTF32Encoding です
.NET Framework でのテキスト ファイルの読み書きには主に以下が使用されます:
ファイル リーダー TextReader クラスとテキスト ライター TextWriter クラス
それらの派生クラス ストリーム リーダー StreamReader クラスおよびストリーム ライター StreamWriter クラス
または StringReader および StringWriter クラス
TextReader クラスとその派生クラス 共通メソッド:
Close (リーダーを閉じてシステム リソースを解放する)、Read (次の文字を読み取り、存在しない場合は -1 を返す) 、ReadBlock (文字のブロックを読み取る)、ReadLine (文字の行を読み取る)、ReadToEnd (現在位置から最後まですべての文字を読み取る)
TextWriter クラスとその派生クラスの共通メソッド:
Close (ライターを閉じる)システム リソースを解放します)、Flush (バッファリングされたすべてのデータが基礎となるデバイスに書き込まれるように、現在のライターのすべてのバッファをクリアします)、Write (テキスト ストリームに書き込む)、WriteLine (データ行を書き込む)
ASP .NET
はじめに
ASP.NET は、他の動的 Web デザイン テクノロジよりも使いやすい動的 Web デザイン テクノロジです。これは、ユーザー対話とデータ処理に特に優れたスケーラブルな Web アプリケーション開発テクノロジです。
ASP.NET はプログラミング言語ではありません。Web アプリケーションを作成するために使用される、.NET Framework に基づくプログラミング フレームワークです。
ASP.NET 構文は ASP と互換性がありますが、ASP アプリケーションは ASP.NET 環境で直接実行できないため、適切に変更する必要があります。 ASP.NET と ASP の最大の違いは、前者がコンパイルされた動的 Web ページ テクノロジであるのに対し、後者は解釈された動的 Web ページ テクノロジであることです。 ASP.NET のより一般的なバージョンは、バージョン 1.1、バージョン 2.0、およびバージョン 3.0 です。 Visual Studio.NET 2003 でリリースされた ASP.NET はバージョン 1.1、Visual Studio.NET 2005 でリリースされた ASP.NET はバージョン 2.0 です。 2007 年に Visual Studio.NET 2008 とともにリリースされた ASP.NET はバージョン 3.0 です。
ASP.NETの利点
優れた管理性
高いセキュリティ
導入が簡単
ASPやJSPと比較してパフォーマンスが大幅に向上
柔軟な出力キャッシュテクノロジー
Unicode エンコーディングを使用して国際化を実現
モバイルデバイスをサポート
拡張されて使用可能 プログラムの一般的な手順
VS 2005 を使用して Web アプリケーションを設計するための操作手順 S1: 新しい Web サイトを作成する S2: Web サイトの場所を設定する
S3: Web サイトを追加するWeb ページ
S4: Web フォームをデザインする
S5: フォームとフォーム コントロールのプロパティを設定する
S6: プログラムを書く
S7: Web アプリケーションを実行する
S8: 実行結果を表示する
注、詳細については教科書を参照してください。詳細
(1) Web アプリケーションを生成する
操作方法:Visual Studio .NET 2005 のソリューション エクスプローラー ウィンドウ内で Web サイト名を右クリックし、「Web サイトの生成」を選択します
(2) Web サーバーが正常であるか確認します
Ifローカル コンピューターに公開したい場合は、ローカル コンピューターに
IIS がインストールされているかどうかを確認する必要があります
IIS が適切に動作しているかどうかを確認してください
テーブル、レコード、およびフィールド
リレーショナル データベース システムは、データを整理する方法としてリレーショナル モデルを使用します。 テーブルは、日常生活におけるテーブル
に似た、共通の構造に格納された類似したデータのグループです。
テーブルは、関連する情報を行と列の論理グループに配置します。テーブル内の各行はレコードと呼ばれます。
列はフィールドと呼ばれます
データベース
データベースは、複数のテーブルの集合としてデータテーブルを表し、テーブル間の関係を確立することによってデータベースの構造を定義します
いわゆる主キーは、一意に使用される1つまたはグループのフィールドを指しますテーブル内のレコードを識別します。主キーでは重複した値は許可されません。 外部キーとは、別のテーブルを接続し、別のテーブルの主キーとして機能するために使用されるフィールドを指します。 インデックス
リレーショナル データベースでは、データの取得速度を向上させるためにインデックスがよく使用されます。
レコードは入力の物理的な順序でテーブルに保存されます。主キーまたはその他のフィールドに対してインデックスが作成されると、データベース管理システムはインデックス フィールドの内容を特定の順序でインデックス ファイルに記録します。
データを取得する場合
、データベース管理システムはまずインデックス ファイルから情報の場所を見つけてから、テーブルからデータを読み取ります。
各インデックスには、インデックスの順序を決定するインデックス式があります。インデックス式は、フィールドまたは複数のフィールドの組み合わせのいずれかになります。
テーブルに対して複数のインデックスを生成でき、各インデックスは一連の処理データを表します。
関係
リレーショナル データベースの最大の利点は、データの不必要な重複を回避できることです。つまり、重複データを含むテーブルを重複データのない複数の単純なテーブルに分割し、テーブル間の関係を確立することでそれらを取得できます。テーブル。
テーブル間のリレーションシップでは、メインテーブルを親テーブルと呼び、リレーションシップを通じて接続されている他のテーブルを子テーブルと呼ぶのが一般的です。 テーブル間には 4 種類のリレーションシップが存在します。 1 対 1 のリレーションシップ: 子テーブルの最大 1 つのレコードとのみ一致する親テーブルのレコードを指します。
1 対多のリレーションシップ。 : 親テーブルのレコードを参照します。レコードは子テーブルの複数のレコードに関連付けられています。たとえば、customer テーブルと order テーブルの場合、各注文は 1 人の顧客にのみ関連付けられ、各顧客は複数の注文を持つことができるため、customer テーブルと order テーブルは 1 対多の関係になります。 -one 関係: 1 対多は相補的です。つまり、親テーブル内の複数のレコードが子テーブル内の 1 つのレコードに関連付けられます。
多対多の関係: 親テーブル内の複数のレコードが関連付けられることを指します。子テーブル内の複数のレコードに。
SQL の概要
SQL (構造化クエリ
Lang
uage) 言語は、クエリ、操作、定義、制御などの機能を備えた包括的な汎用リレーショナル データベース言語です。
現在、SQL 標準には 3 つのバージョンがあります。
SQL-89
SQL-92
SQL3
Microsoft SQL Server で使用される Transact-SQL は、SQL-92 標準に基づいて拡張されています。
SQL の構成 SQL はコマンド、句、演算子などの要素で構成されており、これらを組み合わせてデータの作成、更新
、操作のためのステートメントを形成します。
SQL コマンドは、DDL (データ定義言語) コマンドと DML (データ操作言語) コマンドの 2 つのカテゴリに分類されます。 DDL コマンドは、新しいデータベース、フィールド、インデックスを作成および定義するために使用されます。主に、create、drop、alter などのステートメントが含まれます。 DML コマンドは、データベースからデータを並べ替え、フィルターし、抽出するためのクエリを作成するために使用されます。これらのコマンドには、主に、選択、挿入、更新、削除などのステートメントが含まれます。 P258
SQL 句は、選択または操作されるデータを定義するために使用されます。
select ステートメント
select ステートメントの機能は、既存のデータベースからデータを取得することです。 from 句
データのソースを指定します。つまり、レコードがどのテーブルから取得されたかを示します。
where 句
は、レコードを選択するときに満たされる条件を指定します。
group by 句はレコードをグループ化します。
having 句は、group by 句を使用してクエリに具体的に表示されるレコードを決定します。having 句を使用すると、指定した条件を満たすグループを表示できます。
order by 句はレコードを並べ替えます。
ステートメントの例については、P258-260 を参照してください。
delete ステートメント
delete ステートメントの機能は、from 句にリストされ、where 句の条件を満たす 1 つ以上のテーブル内のレコードを削除することです。
例:
OrderId=16 の注文から削除
insert ステートメント
insert ステートメントは、テーブルにレコードを追加するために使用されます。
例:
Orders に挿入
(CustID,ProductID,OrderDate,SendDate,Qty)
values('2','5','2008-8-12','2008-8-13',1)
update ステートメント
update ステートメントは、特定の条件に基づいて特定のテーブルのフィールド値を更新します。
例:
update Products set Price=8900 where Products.ProductId=3
ADO.Net の概要
ADO.NET は Microsoft の最新かつ最も強力なデータベース アクセス テクノロジであり、アプリケーションは ADO.NET を通じて非常に簡単にアクセスし、データを処理できます。さまざまなデータベースに保存されます。
ADO.NET は、データ処理用の多くのクラスを収集します。これらのクラスには、インデックス作成、並べ替え、参照、更新などの強力なデータ アクセス機能と処理機能があります。
ADO.NET は .NET Framework に統合されており、C# などの .NET をサポートする任意のコンピューター言語で使用できます。
ADO.NET には、主に System.Data 名前空間とそのネストされた名前空間に加えて、system.Xml 名前空間などのデータ アクセスに関連するいくつかの特別なクラスが含まれています。
データ プロバイダー
データ プロバイダーは、DataSet とデータベース間の接続を提供し、データベースにアクセスするための一連のインターフェイスも含みます。さまざまなデータ ソースのデータには、データ プロバイダーが提供するアプリケーション プログラミング インターフェイス (API) を通じて簡単にアクセスできます。
.NET データ プロバイダーには次のものが含まれます:
SQL Server .NET データ プロバイダー (System.Data.SqlClient 名前空間から、Microsoft SQL Server データ ソースに使用されます)
OLE DB .NET データ プロバイダー (OLE に使用されます)。 DB は System.Data.OleDb 名前空間から取得されます。
ODBC.NET データ プロバイダは ODBC に使用されます。 公開されたデータ ソースは System.Data.Odbc 名前空間から取得されます。
Oracle .NET データ プロバイダは、System から取得されます。 .Data.OracleClient 名前空間。
データ プロバイダー
.NET データ プロバイダーには 4 つのコア オブジェクトがあります:
Connection オブジェクトはデータ ソースとの接続を確立するために使用されます。
Commmand オブジェクトはデータ ソース上で指定されたコマンドを実行するために使用されます。 - データ ソースからのメッセージ (前方専用) 読み取り専用データ ストリーム;
DataAdapter オブジェクトは、データに対するさまざまな操作をデータ ソースの対応する SQL ステートメントに自動的に変換します。
DataSet
ADO.NET であり、コア コンポーネントは DataSet です。
DataSet は、データベースに依存しない独立した
データセット として考えることができます。独立とは、データ接続が切断されたり閉じられたりした場合でも、DataSet が引き続き使用できることを意味します。 ADO.NET では、DataSet はデータ ソースから取得したデータを処理するために特別に使用され、基になるデータが何であっても、同じメソッドを使用して異なるデータ ソースから取得したデータを操作できます。
DataSet は内部で XML を使用してデータを記述します。 XML は、プラットフォームやデータに依存しないデータ記述言語であり、複雑なデータ関係を記述することができます。
ADO.NET データベース操作プロセス
まず、Connection オブジェクト
を使用してデータベースに接続します 結果を返す必要のないデータベース実行コマンドまたは ストアド プロシージャ
を実行する場合は、Command オブジェクトを使用できます。 DataReader オブジェクトは、データ ソースから読み取り、前方専用および読み取り専用のデータ ストリームを取得するために使用されます。 DataSet は、データ ソースから独立した一貫したリレーショナル プログラミング モデルを提供する、メモリ常駐のデータ表現です。 DataSet は、テーブル、制約、テーブル間の関係を含むデータ セット全体を表します。 既存のデータ ソースとの対話は DataAdapter を通じて制御されます。 DataAdapter オブジェクトは、データ ソースからデータを取得し、DataSet とテーブルと制約を設定し、DataSet への変更をデータ ソースに送信するために使用されます。
Connection オブジェクトを使用してデータベースにアクセスします
データベースに接続する手順
(1) 接続文字列を定義します
SQL Server 認証を使用します:
初期カタログ = データベース名; Pwd=パスワード
Windows 認証を使用します:
データ ソース = サーバー名;初期カタログ = データベース名;
統合セキュリティ = True
(2) 接続オブジェクトを作成します
SqlConnection connection = new SqlConnection(connString);
(3) データベースへの接続を開きます
接続。Open( );
コマンド オブジェクトを使用してデータベースにアクセスします。ExecuteNonQuery() を使用する手順:
(2) SQL ステートメントを定義します。
(4) ExecuteNonQuery()メソッドを実行します
(5) 返された結果に従って処理します。
以上がC# の概念システムの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。