1. .Net이란
.Net은 차세대 Microsoft Windows 및 웹 애플리케이션을 구축하고 실행하는 데 사용할 수 있는 Microsoft에서 출시한 애플리케이션 개발 플랫폼입니다.
2. .Net의 핵심 기술
.Net Framework: .Net 플랫폼의 핵심으로, .Net 플랫폼에서 애플리케이션을 운영하기 위한 기본 프레임워크를 제공합니다. .
.Net Enterprise Server: 다양한 개발 도구 키트를 포함하여 기업을 위한 Microsoft 기술 서비스의 일부입니다.
빌딩 모듈 서비스: Microsoft에서 제공하는 COM+ 구성 요소 서비스 및 XML 웹 서비스 기술입니다. 빌딩 모듈 서비스를 사용하여 애플리케이션 모듈을 개발하면 완전한 기능을 갖춘 소프트웨어를 빠르게 조립할 수 있습니다.
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#, Js크립트 등 5개 언어를 직접 사용하여 모든 애플리케이션을 개발할 수 있습니다.
6..Net Framework에는 ADO.NET, ASP.NET클래스 라이브러리라는 두 가지 주요 구성 요소가 있습니다. >, XML 웹 등
7..Net Framework는 3가지 유형의 사용자 인터페이스를 지원합니다.
순수 문자 인터페이스로 애플리케이션을 디자인하는 데 사용되는 명령 콘솔
Windows 인터페이스로 애플리케이션을 디자인하는 데 사용되는 Windows Forms
웹 양식 , 웹 인터페이스 설계에 사용되는 애플리케이션
8.ADO.NET은 .Net Framework에서 제공하는 Microsoft의 차세대
객체 지향 데이터 처리 기술로, 이를 사용하여 데이터베이스 애플리케이션을 쉽고 효율적으로 개발할 수 있습니다. 빠르게. ASP.Net은 .Net Framework에서 제공하는 새로운 웹 애플리케이션 개발 기술입니다. ASP.NET을 사용하여 WEB 애플리케이션을 개발하는 것은 Windows 애플리케이션을 개발하는 것만큼 쉽습니다.
Xml Web Service는 인터넷 환경에서 직접 호출할 수 있는 컴포넌트입니다. .Net Framework는 XML 웹 서비스를 생성, 테스트 및 배포하기 위한 도구와 클래스를 제공합니다.
9.Net Framework는 애플리케이션 개발자에게 플랫폼 독립적인
개발 환경을 제공합니다. .Net Framework를 사용하여 프로그램을 개발하면 다음과 같은 장점이 있습니다.
1. 프레임워크는 기존 인터넷 기술과 기타 웹 표준을 완벽하게 지원합니다.
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 웹 서비스 및 .Net Framework를 지원합니다.
(5) C#에서는 확장된 메타데이터로
데이터 유형
을 사용자 정의할 수 있습니다. (6) C#은 개발자에게 요구되는 유연성을 유지하면서 개발 효율성을 향상시킵니다. C# 프로그램의 특징: 4. C# 프로그램의 메소드 구조
C# 프로그램의 메소드는 메소드 헤더와 메소드 본문의 두 부분으로
그룹화됩니다
. 메서드 헤더: 메소드 헤더는 반환 값 유형, 메소드 이름, 형식 매개변수 이름 및 형식 매개변수 유형 설명을 포함하는 메서드의 첫 번째 줄입니다. 메서드 본문: 메서드 본문은 한 쌍의 중괄호 "{ }"로 묶이며 일반적으로 선언문과 실행문을 포함합니다.
5. C# 프로그램의 명령문
C# 프로그램의 각 명령문은 세미콜론으로 끝나야 합니다. 작성 시에는 한 줄에 여러 개의 명령문을 작성해도 됩니다.
6. C# 프로그램의 입력 및 출력 작업
C# 언어 자체에는 입력 및 출력 문이 없으므로 C# 콘솔 응용 프로그램은 클래스 라이브러리(ReadLine, WriteLine 등)을 사용하여 입력, 출력 및 기타 작업을 완료하는 반면 C# Windows 애플리케이션 및 웹 애플리케이션은 Control 클래스(예: 레이블, 텍스트 상자 등)를 사용해야 합니다. 입력과 출력을 달성하기 위한 클래스 라이브러리.
7.
C# 프로그램에 대한 주석 "//" 또는 "/*...*/"를 사용하여 주석을 추가할 수 있습니다. 적절한 주석을 추가하면 프로그램의 가독성이 크게 향상될 수 있습니다.
단순 유형은 다음 4가지
유형을 포함하여 고유한 값을 가진 데이터 유형을 나타냅니다. 1.
정수 유형 2. 부동 소수점 유형3. 부울 유형
float 유형: 값 범위는 ±1.5e?45~±3.4e38입니다. 정확도는 7자리입니다. double 유형: 값 범위는 ±5.0e?324~±입니다. 1.7 e308의 정확도는 15~16자리
3. 소수형 십진수 고정밀 재무 및 재무 계산 필드의 요구 사항을 충족하기 위해 C#에서는 값 범위와 함께 소수형 데이터 형식
을 제공합니다. ±1.0?×?10e 28 ~ ±7.9? )
5. 프로그램이 실행되는 동안 값이 변하지 않는 양을
상수
1이라고 합니다. 정수 상수는 부호 있는 정수 상수, 부호 없는 정수 상수, 긴 정수 상수로 나뉜다
부호 있는 정수 상수는 5처럼 직접 쓴다.
부호 없는 정수 상수는 5U처럼 쓸 때 u나 U 기호를 더한다.
긴 정수 5L 등의 유형 상수를 작성할 때 l 또는 L 표시를 추가합니다.
2. 부동 소수점 상수
부동 소수점 상수는 단정도 부동 소수점 상수와 배정도 부동 소수점 상수로 구분됩니다. 포인트 상수
단정밀도 부동 소수점 유형 상수는 5F
와 같이 작성할 때 f 또는 F로 표시됩니다. 배정밀도 상수는 5D
와 같이 d 또는 D로 표시됩니다. 10진수 형식에서는 자동으로 배정밀도 부동 소수점 상수로 해석됩니다. 예를 들어 5.0은 배정밀도 부동 소수점 상수입니다.
3. 소수점 상수
소수점 상수 뒤에 m 또는 M 표시를 추가해야 합니다. 그렇지 않으면 부동 소수점 데이터로 해석됩니다.
4. 문자 상수(유니코드 문자):
문자 상수는 '5', 'A', '中', '@' 등 두 개의 작은따옴표로 표시됩니다.
C# 이스케이프 문자 상수는 다음으로 시작합니다. 백슬래시''는 제어 문자와 보이지 않는 문자를 나타내는 데 사용됩니다. 예를 들어 'b'는 한 문자 뒤로 돌아가는 것을 의미합니다. 자세한 내용은 교과서
P26의 표 2-3을 참조하세요. 5. 불리언 상수는 2개뿐입니다
. true는 논리적으로 true를 의미하고, false는 논리적으로 false를 의미합니다.
6.
문자열
상수
문자열 상수는 "5", "abc", "중국어"와 같이 큰따옴표로 표시된 여러 유니코드 문자로 구성된 문자 시퀀스를 나타냅니다. 구조적 유형은 struct로 표시되어야 합니다. 구조 멤버에는 데이터 멤버, 메서드 멤버 등이 포함될 수 있습니다.
데이터 멤버는 구조의 데이터 항목을 나타냅니다.
메서드 멤버는 데이터 항목에 대한 작업을 나타냅니다.
1.
변수의 개념
프로그램이 실행되는 동안 그 값이 변할 수 있는 양을 변수라고 합니다. 변수 이름
: 모든 변수에는 이름이 있어야 합니다. 변수 명명은 식별자 명명 규칙을 따라야 합니다. 예를 들어 문자나 밑줄로 시작해야 하며, 영문자, 숫자, 밑줄만 포함할 수 있고 공백 등은 포함할 수 없습니다.
변수 값: 변수 값은 메모리에 저장됩니다. 다양한 유형의 변수가 차지하는 메모리 단위(바이트)가 다릅니다. 프로그램에서 변수의 값은 이름으로 참조됩니다. 2. 변수 정의 일반적인 변수 정의 형식은 다음과 같습니다.
데이터 유형 변수 이름 1, 변수 이름 2,...
예: int a,b,c;
long x,y;
float p1,p2;
3. 변수 초기화
C#算术运算符包括+、-、*、/、%、++、--共七种 声明和创建多维数组的一般形式: 上例中numbers[0]=1,……,numbers[4]=5 3. 数组的初始化 注意在先声明后初始化时,不能采用简写形式,例如: 是错误的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. 复合赋值运算符
+=、-=、*=、/=、%=、&=、|=、^=、c1416f47236dd7b5b9b6ea098534dc8d>=
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, external, protected, protected Internal이 포함됩니다.
네임스페이스, 구조체, 클래스 및 해당 멤버를 정의하기 위해 액세스 한정자를 사용할 때
다음 사항에 유의하세요.
(1) 보호된 내부 조합을 사용하는 경우 멤버 또는 유형은 하나의 액세스 한정자만 가질 수 있습니다.
(2) 네임스페이스에는 액세스 한정자가 허용되지 않으며 네임스페이스에 대한 액세스 제한이 없습니다.
(3) 액세스 한정자를 지정하지 않으면 기본 접근성이 사용되며 클래스 멤버는 기본적으로 비공개로 설정됩니다.
(4) 최상위 유형(다른 유형에 중첩되지 않은 유형)의 접근성은 내부 또는 공용일 수 있으며 기본 접근성은 내부입니다.
메서드 정의에 대한 자세한 설명
(1) 액세스 수정자는 메소드의 액세스 수준을 제어합니다. 메소드에 사용할 수 있는 수정자는 public, protected, private, Internal 등입니다.
(2) 메서드의 반환 값 유형은 값 유형 및 참조 유형을 포함하여 모든 유효한 데이터 유형이 될 수 있습니다. 반환 값이 없는 경우 반환 값 유형은 void 키워드로 표시됩니다.
(3) 메소드 이름은 변수 이름 명명 규칙과 동일한 C# 명명 규칙을 따라야 합니다.
(4) 매개변수 목록은 메소드가 허용할 수 있는 입력 데이터입니다. 메소드에 매개변수가 필요하지 않은 경우 매개변수 목록은 생략 가능하지만 괄호는 생략할 수 없습니다. 매개변수가 두 개 이상인 경우 쉼표를 구분하여 사용해야 하며, 매개변수의 데이터 유형이 동일하더라도 각 매개변수는 데이터 유형을 선언해야 합니다.
(5) 중괄호 {} 안의 내용은 여러 문으로 구성된 메서드 본문입니다. 각 문은 세미콜론으로 끝나야 합니다. 메소드 종료 시 연산 결과를 반환해야 하는 경우에는 return 문을 사용하여 반환해야 하며, 이때 return 문에서 반환하는 값의 형식이 메서드 반환 값 형식과 일치해야 한다는 점에 유의하세요. . 메소드가 void로 표시되고 반환 값이 없는 경우 return 문을 생략할 수 있습니다.
1. 값형 매개변수
값형 매개변수를 전달하기 위해 방향 메소드를 호출할 때 호출자는 실제 매개변수 변수의 값을 해당 형식 매개변수 변수, 즉 실제 매개변수에 할당합니다. 변수와 형식 매개변수 변수는 서로 다른 두 변수입니다.
실제 매개변수 변수의 값이 형식 매개변수 변수로 전달되는 경우 단방향 값 전달입니다.
참조 유형 매개변수
는 값 매개변수와 다릅니다. 호출 방향 메서드가 참조 유형 매개변수를 전달하면 호출자는 실제 매개변수 변수의 참조를 해당 형식 매개변수 변수에 할당합니다. 실제 매개변수 변수의 참조는 데이터 값의 메모리 주소를 나타내므로 형식 매개변수 변수와 실제 매개변수 변수는 동일한 참조를 가리킵니다.
형식 매개변수 변수가 참조하는 데이터 값이 메소드 내에서 변경되면 실제 매개변수 변수가 참조하는 데이터 값도 수정됩니다.
return 문은 한 번에 하나의 데이터만 반환할 수 있으므로 여러 데이터를 반환해야 하는 경우 참조 매개변수의 이 기능을 사용하면 됩니다.
C#에서는 ref 키워드를 통해 참조 매개변수를 선언합니다. 형식 매개변수이든 실제 매개변수이든 참조를 데이터에 전송하려면 ref 키워드를 추가해야 합니다.
출력 매개변수
메소드의 return 문은 하나의 연산 결과만 반환할 수 있습니다. 참조 매개변수를 사용하여 계산 결과를 반환할 수도 있지만 먼저 실제 매개변수를 초기화해야 합니다.
출력 매개변수는 실제 매개변수를 초기화할 필요가 없습니다. 특히 메소드의 데이터를 형식 매개변수를 통해 실제 매개변수로 반환하는 데 사용되지만 실제 매개변수의 값은 형식 매개변수에 전달되지 않습니다. . 한 메서드에 여러 출력 매개변수가 허용됩니다.
C#에서는 out 키워드를 통해 출력 매개변수를 선언합니다. 형식 매개변수이든 실제 매개변수이든 출력 매개변수라면 out 키워드를 추가해야 합니다.
배열형 매개변수
배열을 매개변수로 사용하는 방법은 두 가지가 있습니다.
하나는 형식 매개변수 그룹 앞에 params 수식자를 추가하지 않는 것
다른 하나는 형식 매개변수 그룹 앞에 params를 추가하는 것입니다. 수정자.
두 형식의 차이점
params 수식자가 추가되지 않은 경우 해당 실제 매개변수는 배열 이름이어야 합니다.
params 수정자를 추가할 때 해당 실제 매개변수는 배열 이름이거나 배열 요소 값 목록일 수 있습니다.
어떤 형식을 사용하든 형식 매개변수 그룹은 배열 길이를 정의할 수 없다는 점에 유의할 가치가 있습니다.
오버로딩
메서드 오버로딩은 같은 타입에 같은 이름을 가진 두 개 이상의 메소드를 선언하는 것을 말합니다. 메서드 오버로딩은 다른 매개변수 목록을 사용하여 동일한 작업을 수행해야 할 때 유용할 수 있습니다.
2. 소멸자의 특성 :
(1) 구조에서는 소멸자를 정의할 수 없으며 클래스에서만 소멸자를 사용할 수 있습니다.
(2) A; 클래스는 하나의 소멸자를 가질 수 있습니다.
(3) 소멸자는 상속되거나 오버로드될 수 없습니다.
(4) 소멸자는 수정자나 매개변수가 없습니다. 프레임워크의 CLR은 기본 클래스 Object.
Finalize 메서드에 대한 호출을 자동으로 추가하여 장면을 정리하므로 Object.Finalize 메서드에 대한 호출은 소멸자에 포함될 수 없습니다. 기본적으로 컴파일러는 빈 소멸자를 자동으로 생성하므로 C#에서는 빈 소멸자 정의를 허용하지 않습니다.
1. 정적 클래스 정의:
정적 클래스는 정적 키워드 를 사용하여 선언되며, 이는 정적 멤버만 포함함을 나타냅니다.
정적 클래스의 인스턴스를 생성하기 위해 new 키워드를 사용할 수 없습니다.
실제 애플리케이션에서 클래스의 멤버가 특정 개체와 연결되지 않은 경우 정적 클래스로 생성될 수 있습니다.
2. 정적 클래스의 주요 기능:
(1) 정적 클래스에는 정적 멤버만 포함됩니다.
(2) 정적 클래스는 인스턴스화할 수 없습니다.
(3) 정적 클래스는 봉인됩니다. ;
(4) 정적 클래스는 인스턴스 생성자 를 포함할 수 없습니다.
3. 정적 클래스의 장점:
(1) 컴파일러는 인스턴스 멤버가 추가되지 않았는지 자동으로 검사할 수 있습니다.
(2) 정적 클래스를 사용하면 프로그램 구현이 더 간단하고 빨라집니다. 메서드를 호출하기 위해 객체를 생성할 필요가 없기 때문입니다.
참고: 정적 클래스는 봉인되어 있으므로 상속될 수 없습니다. 또한 정적 클래스는 인스턴스 생성자를 포함할 수 없지만 여전히 정적 생성자를 선언하여 초기 값을 할당하거나 일부 정적 상태를 설정할 수 있습니다.
(1) 파생 클래스의 특징
은 자신만의 멤버를 가질 수 있습니다.
전용 멤버, 생성자 및 소멸자를 제외하고 메서드, 필드, 속성 및 이벤트를 포함하여 기본 클래스의 모든 멤버를 암시적으로 상속할 수 있습니다.
파생 클래스는 하나의 클래스에서만 상속할 수 있습니다.
봉인 클래스
봉인 클래스를 사용하면 클래스의 코드가 다른 클래스에서 상속되는 것을 방지할 수 있습니다.
봉인 클래스 사용의 이점:
가능 애플리케이션 성능 향상 안정성 및 성능(.NET Framework 공용 언어 런타임 CLR에서는 봉인된 클래스를 로드할 때 봉인된 클래스에 대한 메서드 호출이 최적화됨)
소프트웨어 회사는 봉인된 클래스를 사용하여 다른 사람이 코드를 공유하는 것을 방지함으로써 지적 재산권을 보호할 수도 있습니다.
C#에서는 Sealed 키워드를 추가하여 Sealed 클래스를 선언합니다.
4. 파생 클래스를 사용하여 기본 클래스의 데이터와 동작을 변경하기 위해 C#에서는 두 가지 옵션을 제공합니다. 1. 새 파생 클래스 멤버를 사용하여 기본 멤버 교체 2. 가상 기본 멤버 재정의
virtual 및 재정의를 사용할 때 다음 사항에 주의하세요.
(1) 필드는 가상일 수 없으며 메서드, 속성, 이벤트 및 인덱서만 가능합니다.
(2) virtual 수정자를 사용한 후에는 static, abstract 또는 override 수정자를 사용할 수 없습니다.
(3) 파생 클래스 객체가 기본 클래스 객체로 캐스팅되더라도; 참조되는 것은 여전히 파생 클래스의 멤버입니다.
(4) 파생 클래스는 봉인을 통해 가상 상속을 중지할 수 있습니다. 이때 파생 클래스의 멤버는 봉인된 재정의를 사용하여 선언됩니다.
추상 클래스의 특징:
추상 클래스는 기본 클래스로 사용되며 직접 인스턴스화할 수 없으며 추상 키워드를 통해서만 식별할 수 있습니다. 추상 클래스의 목적은 여러 파생 클래스에서 공유할 수 있는 기본 클래스의 공통 정의를 제공하는 것입니다.
추상 클래스에는 추상 속성, 추상 메서드와 같은 추상 멤버는 물론 비추상 멤버, 심지어 가상 메서드도 포함될 수 있습니다.
추상 속성의 특징
클래스의 속성 멤버에 추상 키워드가 추가되면 추상 속성이 됩니다.
추상 속성 선언은 속성 접근자의 구현을 제공하지 않고 클래스에서 지원하는 속성만 선언하며 접근자 구현은 파생 클래스에 맡깁니다.
추상 속성은 읽기 전용, 쓰기 전용 또는 읽기-쓰기 속성일 수도 있습니다.
파생 클래스가 추상 클래스에서 추상 속성을 상속하는 경우 파생 클래스는 추상 속성을 재정의해야 합니다.
추상 속성은 추상 키워드를 사용하여 식별합니다.
추상 메소드의 특징:
클래스의 메소드 멤버에 abstract 키워드를 추가하면 추상 메소드가 됩니다.
추상 메서드 선언은 메서드 구현을 제공하지 않으며 빈 메서드여야 하며 메서드 구현은 파생 클래스에 맡겨집니다.
파생 클래스가 추상 클래스에서 추상 메서드를 상속하는 경우 파생 클래스가 추상 메서드를 재정의해야 합니다.
추상 메소드가 구현되지 않았기 때문에 추상 메소드는 일반 메소드 본문을 포함하지 않고 세미콜론으로 끝납니다.
1. Delegate는 참조 메소드의 일종으로 클래스, 인터페이스, 배열과 동일하며 참조형에 속합니다.
C# 프로그램에서는 대리자 유형을 선언하고, 대리자 유형의 변수를 정의하고, 대리자 변수에 메서드를 할당하고, 대리자를 통해 하나 이상의 메서드를 간접적으로 호출할 수 있습니다.
델리게이트에 메소드가 할당되면 델리게이트는 해당 메소드와 정확히 동일하게 작동합니다.
C#에서는 동일한 시그니처(동일한 반환 값 및 매개변수)를 가진 모든 메서드를 대리자 변수에 할당할 수 있습니다.
대리자의 본질은 메서드를 나타내는 참조(즉, 메모리 주소)입니다. 이는 콜백 메서드를 정의하는 데 이상적인 선택이며 C#에서 구동되는 이벤트를 구현하는 주요 방법이기도 합니다. 🎜> 프로그래밍 모델. 델리게이트에는 다음과 같은 특징이 있습니다.
(1) 델리게이트는 완전히 객체 지향적이고 안전한 데이터 유형인 C++
함수 포인터와 유사합니다. (2) Delegate를 사용하면 메서드를 매개변수로 전달할 수 있습니다.
(3) Delegate를 사용하여 콜백 메서드를 정의할 수 있습니다.
(4) 대리인은 서로 연결될 수 있습니다. 예를 들어 이벤트에 대해 여러 메서드를 호출할 수 있습니다.
(5) 위임자 서명이 메서드와 정확히 일치할 필요는 없습니다.
컬렉션은 동적으로 크기를 조정할 수 없는 배열에 비해 임의의 개체를 고도로 구조화된 방식으로 저장하는 클래스입니다. 컬렉션은 크기를 마음대로 조정할 수 있을 뿐만 아니라 컬렉션에 저장된 개체를 저장하거나 검색하기 위한 고급 방법도 제공합니다. .
컬렉션은 유사한 유형의 개체 그룹을 그룹화할 수 있습니다.
컬렉션 클래스를 선택할 때 일반적으로 다음 사항을 고려해야 합니다.
(1) 시퀀스 목록이 필요한지 여부. 선입선출 동작이 필요한 경우 Queue 클래스를 사용할 수 있습니다. 후입선출 동작이 필요한 경우 Stack 클래스를 사용할 수 있습니다.
(2) 컬렉션의 요소에 무작위로 액세스해야 하는지 여부에 관계없이 Queue 큐 클래스, Stack 스택 클래스, LinkedList 이중 연결 목록 클래스를 선택할 수 없습니다.
(3) 인덱스를 통해 각 요소에 액세스해야 하나요? ArrayList 동적 배열 클래스, StringCollection 문자열 컬렉션 클래스 등만 인덱스가 0인 요소부터 하나씩 컬렉션 요소에 액세스합니다. 해시테이블 해시 테이블 및 사전 사전 클래스는 요소의 키(즉, 요소 이름)를 통해 요소에 대한 액세스를 제공합니다. NameValueCollection 클래스와 SortedList 일반 클래스는 해당 요소의 0부터 시작하는 인덱스 또는 해당 요소의 키를 통해 요소에 대한 액세스를 제공합니다.
(4) 값, 키와 값 세트 또는 하나의 키와 여러 값의 세트를 포함하는지 여부. 그 중 "하나의 값"의 컬렉션은 IList 목록 인터페이스를 기반으로 파생된 컬렉션이고, "하나의 키와 하나의 값"의 컬렉션은 IDictionary 사전 인터페이스 기반의 컬렉션이며, "하나의 키와 다중 값"의 컬렉션은 값"은 NameValueCollection 종류입니다.
(5) 요소를 입력 요소와 다르게 정렬해야 하는지 여부. Hashtable 해시 테이블 클래스는 해시 코드에 따라 요소를 정렬하고, SortedList 정렬 목록 클래스와 SortedDictionary 정렬 사전은 IComparer 비교 인터페이스에 따라 키별로 요소 정렬을 구현하며, ArrayList 동적 배열 클래스는 Sort 정렬 방법을 제공합니다.
(6) 정보의 빠른 검색 및 검색이 필요한 경우 소규모 컬렉션(요소 10개 이하)의 경우 ListDictionary가 Hashtable보다 빠르며 SortedDictionary 일반 클래스는 Dictionary 일반 클래스보다 빠른 조회를 제공합니다.
(7) StringCollection 및 StringDictionary 등을 사용하는 등 문자열 컬렉션만 허용해야 합니까?
동적 배열 클래스 ArrayList는 요소의 수와 데이터 유형을 제한하지 않습니다.
(1) ArrayList와 Array의 차이점
Array의 크기는 고정되어 있지만 ArrayList의 크기는 필요에 따라 자동으로 확장될 수 있습니다.
한 번에 한 요소의 값만 가져오거나 설정할 수 있습니다. ArrayList에서는 요소 범위를 추가, 삽입 또는 제거할 수 있습니다.
Array의 하한은 사용자 정의할 수 있지만 ArrayList의 하한은 항상 0입니다.
배열은 여러 차원을 가질 수 있습니다. ArrayList는 항상 1차원입니다.
Array는 System 네임스페이스에 있고 ArrayList는 System.Collections 네임스페이스에 있습니다.
(2) 동적 배열 생성:
ArrayList 목록 객체 이름 = new ArrayList(?);
큐의 특성
객체를 삽입할 때 선입선출되는 데이터 구조. 또는 삭제된 개체 대기열의 한쪽 끝에서 삽입하고 다른 쪽 끝에서 제거
큐 개체 생성
큐 대기열 이름 = new Queue([queue length][, Growth Factor]);
설명, 대기열 길이는 기본적으로 32이고 증가합니다. 계수의 기본값은 2.0입니다(즉, 대기열 용량이 부족할 때마다 대기열 길이가 원래 값의 2배로 조정됩니다)
대기열 크기를 조정하려면 특정 성능 비용을 고려하여 대기열을 구성할 때 대기열 길이를 지정하는 것이 좋습니다.
일반적인 대기열 작업 방법에는 대기열 끝에 데이터를 추가하는 Enqueue, 대기열의 선두에서 데이터를 제거하는 Dequeue, 대기열의 선두에서 데이터를 반환하는 Peek, 대기열을 비우는 Clear 및 Contains가 있습니다. 특정 데이터가 포함되어 있는지 확인하세요. 그 중 Enqueue와 Dequeue는 한 번에 하나의 데이터만 추가하거나 삭제할 수 있습니다.
스택의 특징:
선입 후출(first-in last-out) 데이터 구조입니다. 객체를 삽입하거나 삭제할 때 이 데이터 구조는 스택 상단에서만 삽입 또는 삭제할 수 있습니다.
스택 객체 생성:
스택 스택 이름 = new Stack(?);
일반적인 스택 방법에는 스택 상단에 데이터를 추가하는 Push, 스택 상단 데이터를 제거하는 Pop, Peek가 있습니다. 스택의 최상위 데이터를 반환하고, 스택을 지우려면 Clear, 특정 데이터가 포함되어 있는지 확인하려면 Contain을 사용합니다. 그 중 Push와 Pop은 한 번에 하나의 데이터만 추가하거나 삭제할 수 있습니다.
해시 테이블이라고도 하는 해시 테이블은 키/값 쌍의 모음을 나타냅니다.
해시 테이블의 특징: 컬렉션 요소를 저장할 때 키를 기준으로 해시 코드를 자동으로 계산하여 요소의 저장 위치를 결정한 후 해당 요소의 값이 가리키는 버킷에 저장됩니다. 해당 위치. 검색 시 해당 키에 해당하는 해시코드로 특정 버킷을 다시 검색합니다. 이렇게 하면 요소를 찾는 데 필요한 비교 횟수가 크게 줄어듭니다.
해시 테이블 객체 생성
해시 테이블 해시 테이블 이름 = new Hashtable([해시 테이블 길이][, 성장 인자]);
설명, 기본 길이는 0이고 기본 성장 인자는 1.0
해시 테이블의 일반적인 작업 방법에는 데이터를 추가하는 Add, 데이터를 제거하는 Remove, 해시 테이블을 지우는 Clear, 특정 데이터가 포함되어 있는지 확인하는 Contains가 있습니다. 그중 Add 메서드에는 두 개의 매개 변수가 필요합니다. 하나는 키이고 다른 하나는 값입니다. Remove 메서드에는 하나의 키 매개 변수만 필요합니다.
인터페이스 인덱서와 클래스 인덱서에는 두 가지 차이점이 있습니다.
첫째, 인터페이스 인덱서는 수정자를 사용하지 않습니다.
두 번째, 인터페이스 인덱서는 접근자 get 또는 set, 구현문이 없습니다.
사용자 정의 제네릭 클래스를 생성할 때 다음 사항에 특별한 주의를 기울여야 합니다.
(1) 어떤 유형을 유형 매개변수로 일반화해야 하는지
일반적인 규칙은: 매개변수화할 수 있는 유형이 많을수록 좋습니다. , 코드가 더 유연해질수록 재사용성은 더 좋아지지만 너무 일반화하면 다른 개발자가 코드를 읽거나 이해하기 어려울 수 있습니다.
(2) 제약 조건 이 있는 경우 유형 매개변수에 어떤 제약 조건을 적용해야 할까요?
일반적인 규칙은: 가능한 한 많은 제약 조건을 적용하되 여전히 해당 유형을 처리할 수 있어야 한다는 것입니다. 처리가 필요합니다. 예를 들어 일반 클래스가 참조 유형에만 사용된다는 것을 알고 있는 경우 클래스 제약 조건을 적용합니다. 이렇게 하면 일반 클래스가 실수로 값 유형에 사용되는 것을 방지할 수 있습니다.
(3) 제네릭 동작을 기본 클래스와 서브클래스로 분해할지 여부
제네릭 클래스를 기본 클래스로 사용할 수 있으므로 주의사항은 제네릭이 아닌 클래스와 동일합니다.
(4) 하나 이상의 일반 인터페이스를 구현할지 여부.
이벤트 처리시스템 구성 요소
(1) 이벤트 소스: 이벤트를 트리거할 수 있는 개체를 말하며, 이벤트 발신자 또는 이벤트 게시자라고도 합니다.
(2) 리스너: 이벤트 메시지를 수신할 수 있는 개체를 말합니다. Windows는 기본 이벤트 수신 서비스를 제공합니다.
(3) 이벤트 핸들러: 이벤트가 발생할 때 이벤트를 처리하며 이벤트 함수 또는 이벤트 메서드라고도 합니다. 이벤트 핸들러는 이벤트 수신자, 이벤트 구독자라고도 합니다.
C#의 이벤트에는 다음과 같은 특징이 있습니다.
(1) 이벤트는 클래스가 객체에 특정 작업을 수행해야 함을 알리는 방법입니다.
(2) 이벤트는 다른 시간에도 발생할 수 있습니다. 신호 상태 변경) 매우 유용하지만 일반적으로 그래픽 사용자 인터페이스에서 사용됩니다.
(3) 이벤트는 일반적으로 대리자 이벤트 핸들러를 사용하여 선언됩니다.
(4) 이벤트는 대리자 대신 익명 메서드를 호출할 수 있습니다.
1. 이벤트 기본 개념
이벤트를 발생시키는 개체를 게시자, 이벤트 핸들러를 제공하는 개체를 구독자라고 합니다. .NET Framework에서 이벤트 기반 프로그램은 대리자를 사용하여 이벤트와 이벤트 함수를 바인딩합니다. C#에서 이벤트는 실제로 대리자 유형 변수입니다.
C#을 사용하면 내장된 EventHandler 대리자 유형을 사용하여 표준 이벤트를 선언할 수 있으며 대리자를 먼저 사용자 정의한 다음 사용자 정의 이벤트를 선언할 수도 있습니다.
.NET Framework에서 기본 제공 EventHandler 대리자에는 두 개의 매개 변수가 있으며 해당 데이터 유형은 각각 Object 및 EventArgs 유형이며 반환 값이 없습니다.
Object 매개변수 이름은 일반적으로 이벤트 게시자 자체를 나타내는 sender이고, EventArgs 매개변수는 일반적으로 System.EventArgs 클래스의 새 인스턴스를 이벤트 함수에 전달하는 e입니다. 실제 프로그래밍에서는 게시자가 특정 데이터를 수신자의 이벤트 함수에 보낼 수 있도록 EventArgs 클래스에서 사용자 지정 이벤트 매개 변수 클래스를 파생해야 하는 경우가 있습니다.
이벤트 선언
(1) 내장된 EventHandler 대리자를 사용하여 이벤트(표준 이벤트)를 선언합니다.
형식: public event EventHandler 이벤트 이름;
그중 이벤트 이름은 일반적으로 on을 다음과 같이 사용합니다. 접두사.
예: 공개 이벤트 EventHandler onClick;
(2) 사용자 정의 대리자 유형을 사용하여 이벤트를 선언합니다.
형식: 공개 대리자 반환 값 유형 대리자 유형 이름([매개변수]) ;
일치합니다. 이벤트를 구독할 때 다음 사항을 꼭 파악하세요. (1) 먼저 수신 클래스에는 이벤트 자체와 동일한 시그니처(동일한 반환 값 유형 및 매개변수)를 가진 메서드가 있어야 합니다. 메소드(이벤트 처리 프로그램이라고 함)는 이벤트에 대한 응답으로 적절한 조치를 취할 수 있습니다.
(2) 각 이벤트에는 여러 핸들러가 있을 수 있으며, 여러 핸들러가 순차적으로 호출됩니다. 핸들러가 예외를 발생시키는 경우 아직 호출되지 않은 핸들러는 이벤트를 수신할 기회가 없습니다. 이러한 이유로 이벤트 핸들러는 이벤트를 신속하게 처리하고 예외 발생을 방지하는 것이 좋습니다.
(3) 이벤트를 구독하려면 수신자는 이벤트와 동일한 유형의 대리자를 생성하고 이벤트 핸들러를 대리자 대상으로 사용해야 하며
추가 할당 연산자
(+= ) 소스 개체의 이벤트에 대리자를 추가합니다. (4) 이벤트 구독을 취소하려면 수신자는 뺄셈 할당 연산자(?=)를 사용하여 소스 객체의 이벤트에서 이벤트 핸들러의 대리자를 제거할 수 있습니다.
1. Windows Forms
Windows Forms는 C#을 사용하여 창 기반 애플리케이션을 구축하기 위한 시작점입니다. 그러나 형태 자체의 관점에서 보면 이는 단지 이동 가능한 인터페이스일 뿐입니다. 사용자는 양식에 개체와 텍스트를 직접 그릴 수 있지만 양식의 실제 역할은 Windows 컨트롤의 컨테이너 역할을 하는 것입니다.
컨트롤의 핵심은 정보를 표시하고 사용자가 입력한 정보를 받는 데 사용되는 폼의 멤버 개체입니다.
2. Windows Forms 네임스페이스
Windows Forms의 기본 클래스는 System.Windows.Forms 네임스페이스 정의에서 Form입니다.
.NET의 대부분의 컨트롤은 컨트롤의 기본 기능을 정의하는 System.Windows.Forms.Control 클래스에서 파생됩니다.
.NET Framework의 양식 컨트롤
데이터 표시 DataGridView
데이터 바인딩 및 위치 지정 BindingSource, BindingNavigator
텍스트 편집 TextBox, RichTextBox, MaskedTextBox
정보 표시 Lable, StatusStrip, ProgressBar
웹 페이지 표시 WebBrowser
목록 및 선택 CheckBox, CheckedListBox, ComboBox, RadioButton, ListBox, ListView, NumericUpDown, TreeView, DomainUpDown, TrackBar,
그래픽 디스플레이 PictureBox, ImageList
날짜 설정 날짜시간선택기, 월달력
대화상자 Col또는 D ialog, FontDialog , 열기파일대화상자, 인쇄대화상자, 인쇄이전iewDialog, FolderBrowerDialog, SaveFileDialog
명령 버튼, LinkLabel, NotifyIcon, ToolStrip
Menu MenuStrip, ContextMenuStrip
사용자 도움말 HelpProvider, ToolTrip
은 다른 제어 그룹 Panel, GroupBox, TabControl, SplitContainer, TableLayoutPanel, FlowLayoutPane
컨트롤의 속성
속성 이름 설명
Anchor 컨트롤 바인딩 가져오기 또는 설정 컨테이너의 가장자리에 추가하고 상위
BackColor 컨트롤의 배경색
Bottom 컨트롤 아래에서 컨트롤의 크기를 조정하는 방법을 결정합니다. 컨테이너 클라이언트 영역의 가장자리와 위쪽 가장자리 사이의 거리(단위: 픽셀)
Dock 부모 컨트롤에 도킹된 컨트롤 테두리를 가져오거나 설정하고 컨트롤 크기 조정 방법을 결정합니다. 상위 항목
활성화 컨트롤이 사용자 상호 작용에 응답할 수 있는지 여부
ForeColor 컨트롤의 전경색
높이 컨트롤의 높이
왼쪽 컨트롤의 왼쪽 가장자리와 해당 컨테이너 클라이언트 영역의 왼쪽 가장자리 사이의 거리(픽셀)입니다.
위치 컨테이너의 왼쪽 위 모서리 좌표를 기준으로 컨트롤의 왼쪽 위 모서리입니다.
이름 컨트롤의 이름입니다. 이 이름은 코드에서 컨트롤을 참조하는 데 사용할 수 있습니다.
상위 컨트롤의 상위 컨테이너
오른쪽 컨트롤의 오른쪽 가장자리와 클라이언트 영역의 왼쪽 가장자리 사이의 거리 컨테이너(단위: 픽셀)
크기 컨트롤의 높이와 너비
TabIndex 컨트롤의 탭 순서
TabStop 사용자가 Tab 키를 사용하여 컨트롤에 포커스를 둘 수 있는지 여부를 나타냅니다.
텍스트 이 컨트롤과 관련된 텍스트
상단 컨트롤의 상단 가장자리와 해당 컨테이너의 클라이언트 영역 상단 가장자리 사이의 거리(픽셀 단위)
표시 컨트롤 표시 여부
너비 컨트롤의 너비
버튼컨트롤
단추(단추) 컨트롤은 기본 클래스 ButtonBase에서 파생된 .NET Framework System.Windows.Forms 네임스페이스에 있습니다. 기본 클래스 ButtonBase는 버튼 컨트롤에 필요한 기본 작업을 구현하는 데 사용됩니다.
버튼 컨트롤은 일반적으로 사용되는 컨트롤입니다. 사용자가 "확인" 또는 "취소"와 같은 선택을 요구할 때 일반적으로 버튼 컨트롤이 사용됩니다. 버튼 컨트롤은 마우스 클릭과 두 번 클릭 작업을 지원하며 148abe006775c52e28d07bbe171fd752 키로도 작동할 수 있습니다.
디자인할 때 일반적으로 양식에 컨트롤을 추가한 다음 이를 두 번 클릭하고 Click 이벤트에 대한 코드를 작성합니다. 프로그램이 실행될 때 버튼을 클릭하면 Click 이벤트의 코드가 실행됩니다.
이름 속성: 코드에서 참조할 개체의 이름을 설정하는 데 사용됩니다.
시스템은 자동으로 버튼 컨트롤의 이름을 버튼1, 버튼2...
이름 속성에 의미 있는 이름을 설정하는 것이 가장 좋습니다.
다양한 컨트롤 개체의 이름 속성은 "속성" 창을 통해서만 변경할 수 있습니다. 이 속성은 디자인 타임에 유효하며 런타임에는 읽기 전용입니다.
텍스트 속성: 버튼에 텍스트 형식으로 표시되는 제목 텍스트입니다.
버튼을 클릭하는 것 외에도 버튼에 대해 "Alt + 단축키"를 정의할 수도 있습니다. P155의 그림 7-2를 참조하세요.
단축키 문자 앞에 "&" 문자를 추가하여 방법을 정의합니다.
예: 버튼1.Text = "OK (&Y)"; //표시 제목은 "OK (Y)"입니다.
Visible 속성: 버튼 표시 여부를 결정합니다.
표시하려면 속성 값이 true이고, 숨기려면 false입니다.
컨트롤이 보이지 않으면 사용자의 마우스 및 키보드 작업에 응답할 수 없습니다.
Visible 속성은 런타임에 적용됩니다.
활성화 속성: 버튼의 유효성 여부를 결정합니다.
속성 값이 false인 경우 버튼 텍스트가 회색으로 표시되며 사용자 작업에 응답하지 않습니다.
FlatStyle 속성: 버튼의 스타일을 결정하며 값은 FlatStyle 열거형입니다.
FlatStyle 열거형에는 Flat(플랫 디스플레이), Popup(플랫 디스플레이), 그러나 마우스를 움직일 때 4가지 열거형 값이 있습니다. 외관은 3차원), 표준(3차원 디스플레이) 및 시스템(외관은 운영 체제에 의해 결정됨) 효과는 P156의 그림 7-3에 나와 있습니다.
Button 컨트롤의 FlatStyle 속성은 기본적으로 Standard로 설정됩니다.
이미지 속성: 버튼에 표시할 이미지 지정
ImageAlign 속성: 버튼의 이미지 정렬 설정
Label 컨트롤
기능: 주로 폼에 텍스트를 표시하는 데 사용됩니다.
컨트롤 이름:
레이블: 표준 Windows 레이블
LinkLabel: 레이블과 유사하지만 하이퍼링크 형식으로 표시됩니다.
일반적으로 Label 컨트롤에는 이벤트 처리 코드를 추가할 필요가 없지만, 필요할 경우 이벤트를 지원할 수도 있습니다.
Label 컨트롤의 공통 속성
속성 이름 설명
BorderStyle 컨트롤의 테두리 스타일, 기본값은 테두리 없음입니다.
FlatStyle 플랫 스타일 모양을 설정합니다. PopUp으로 설정하면 플랫 스타일을 의미하며, 마우스가 가리키면 컨트롤이 팝업 스타일로 나타납니다.
이미지 라벨에 표시되는 이미지
ImageAlign 컨트롤에 표시되는 이미지의 정렬
LinkArea 표시되는 텍스트 링크 범위(LinkLabel에만 해당)
LinkColor 일반 링크를 표시할 때 사용되는 색상(LinkLabel에만 해당)
링크 LinkLabel에 포함된 링크 모음 가져오기(만 for LinkLabel)
LinkVisited 링크가 방문한 링크로 표시되는지 여부(LinkLabel에만 해당)
TextAlign? 레이블의 텍스트 정렬
VisitedLinkColor 이전에 방문한 링크를 표시할 때 사용되는 색상(LinkLabel에만 해당)
텍스트 상자 컨트롤
.NET FrameWork에는 TextBox 컨트롤과 RichTextBox 컨트롤이라는 두 가지 기본 제공 텍스트 상자 컨트롤이 있습니다. 이는 Control 클래스에서 파생됩니다.
TextBoxBase는 텍스트 선택, 잘라내기 및 붙여넣기, 관련 이벤트 등 텍스트 상자의 텍스트를 처리하기 위한 기본 기능을 제공합니다.
TextBox의 목적은 주로 사용자가 텍스트를 입력할 수 있도록 하는 것입니다. 또한 숫자 값만 허용하는 등 사용자가 입력하는 문자 유형을 지정할 수도 있습니다. 기본적으로 텍스트 상자에는 최대 2048자를 입력할 수 있습니다. Multiline 속성을 true로 설정하면 최대 32k개의 텍스트를 입력할 수 있습니다. 사용자 텍스트는 Text 속성에 저장되며, 사용자가 입력한 텍스트는 프로그램의 Text 속성을 참조하여 얻을 수 있습니다. RichTextBox는 주로 서식 있는 텍스트를 표시하고 입력하는 데 사용됩니다(TextBox는 짧은 텍스트 문자를 입력하는 데 자주 사용됩니다). RichTextBox는 글꼴, 색상 및 링크를 표시하고, 파일에서 텍스트를 로드하고, 포함된 이미지를 로드하고, 지정된 문자를 찾는 데도 사용됩니다. 향상된 텍스트 상자.
TextBox 컨트롤
속성 이름 설명
CausesValidation? 사용자 입력의 유효성을 확인할지 여부
CharacterCasing 입력 시 문자의 대/소문자 형식을 수정할지 여부
MaxLength? 입력할 수 있는 최대 문자 수를 설정합니다. =0이면 제한이 없습니다
여러 줄 가능한가요?
PasswordChar 비밀번호 표시 문자 설정
ReadOnly? 텍스트가 읽기 전용인지
ScrollBars 여러 줄의 TextBox 컨트롤에 표시되어야 하는 스크롤 막대 가져오기 또는 설정
SelectedText? 현재 선택한 텍스트를 나타냅니다.
SelectionLength? 현재 문자 수 selected
SelectionStart? 현재 선택한 텍스트의 시작점
텍스트 현재 텍스트
WordWrap? 여부 자동으로 래핑하기
이벤트 이름 설명
입력? 컨트롤 입력 시 발생이 4가지 이벤트는 나열된 순서대로 트리거되며 호출됩니다. 컨트롤의 포커스가 변경되면 "포커스 이벤트"가 발생하지만 Validatingidated는 컨트롤이 포커스를 받고 CausesValidation이 true
Leave?로 설정된 경우에만 트리거됩니다. 🎜>입력 포커스가 컨트롤을 벗어날 때 발생검증 중?
컨트롤이 검증되는 동안 발생검증됨
컨트롤이 검증을 완료할 때 발생
KeyDown 이 세 가지 이벤트를 총칭하여 "키 이벤트"라고 하며 컨트롤에 입력되는 콘텐츠를 모니터링하고 변경하는 데 사용됩니다. KeyDown 및 KeyUp? Shift , Ctrl 또는 F1과 같은 특수 키를 눌렀는지 확인하는 데 사용할 수 있습니다. KeyPress는 키에 해당하는 문자를 받습니다KeyPress
KeyUp?
TextChanged?
텍스트 상자의 텍스트가 변경되는 한 이 이벤트가 트리거됩니다RichTextBox 컨트롤
속성 이름
설명 CanRedo?
RichTextBox 내에서 발생한 작업 중 다시 적용할 수 있는 작업이 있는지 나타냅니다. CanUndo?
사용자가 텍스트에 있음을 나타냅니다. 상자 컨트롤에서 이전 작업을 취소할 수 있습니까? DetectUrls
컨트롤에 URL을 입력하면 RichTextBox가 자동으로 URL 형식을 설정합니다. 🎜>Rtf
Text 속성과 동일합니까? 유사하지만 RTF 형식의 텍스트를 포함할 수 있습니다. SelectedRtf
컨트롤에서 현재 선택된 RTF 형식의 서식 있는 텍스트를 가져오거나 설정합니다. SelectedText
RichTextBox에서 선택 항목 가져오기 또는 설정 텍스트 정의SelectionAlignment
선택한 콘텐츠 또는 삽입 지점의 정렬은 중앙, 왼쪽 또는 오른쪽일 수 있습니다SelectionBullet?
글머리 기호 스타일이 현재 선택 또는 삽입 지점에 적용되는지 여부를 나타냅니다.BulletIndent?
글머리 기호의 들여쓰기 픽셀 값을 지정합니다.SelectionColor
가져오기 또는 현재 선택한 텍스트 또는 삽입 지점의 텍스트 색상을 설정합니다SelectionFont
현재 선택한 텍스트 또는 삽입 지점의 글꼴을 가져오거나 설정합니다SelectionLength?
가져오거나 설정합니다 컨트롤에서 선택한 문자 수ShowSelectionMargin
이 속성이 true로 설정되면 RichTextBox 왼쪽에 여백이 나타나 텍스트 선택이 용이해집니다UndoAction
Name Get call Undo 메서드 이후 컨트롤에서 실행 취소할 수 있는 작업의 이름 SelectionProtected
이 속성을 true로 설정하여 특정 작업을 지정합니다. 텍스트의 일부는 수정하면 안 됩니다 RadioButton 컨트롤 속성 이름
설명모양 RadioButton의 모양을 결정하는 값을 가져오거나 설정합니다.
선택 값: 일반 및 버튼. 각 유형은 텍스트나 이미지 또는 둘 다를 표시할 수 있습니다.
일반 선택 후 모습: . 버튼 선택 후 모습:
AutoCheck 이 속성이 true인 경우 사용자가 라디오 버튼을 클릭하면 체크 표시가 나타납니다. 이 속성이 false인 경우 Click 이벤트 핸들러 코드에서 라디오 버튼
CheckAlign 을 수동으로 확인하여 라디오 버튼의 확인란 정렬 형식을 변경해야 합니다. ContentAlignment 열거형의 유효한 값 중 하나일 수 있습니다. 기본값은 MiddleLeft입니다. 이는 콘텐츠가 세로로 가운데 정렬되고 왼쪽으로 가로로 정렬됨을 의미합니다.
선택됨 컨트롤이 선택되었는지 여부를 나타내는 값을 가져오거나 설정합니다. 컨트롤이 선택되면 true이고, 그렇지 않으면 false입니다.
GroupBox 컨트롤
GroupBox(그룹 상자) 컨트롤은 다른 컨트롤에 대해 식별 가능한 그룹화를 제공하는 데 사용됩니다. 일반적으로 그룹 상자를 사용하여 기능별로 양식을 세분화합니다.
단일 GroupBox 컨트롤을 이동하면 여기에 포함된 모든 컨트롤도 함께 이동됩니다.
양식에 GroupBox 컨트롤과 내부 컨트롤을 만들 때 먼저 GroupBox 컨트롤을 만든 다음 그 안에 다양한 컨트롤을 만들어야 합니다.
패널 컨트롤
패널(Panel) 컨트롤은 GroupBox 컨트롤과 유사합니다. 둘 사이의 차이점은 GroupBox 컨트롤만 제목을 표시할 수 있고 Panel 컨트롤만 스크롤 막대를 가질 수 있다는 것입니다.
스크롤 막대를 표시하려면 AutoScroll 속성을 true로 설정하세요.
BackColor, BackgroundImage 및 BorderStyle 속성을 설정하여 패널의 모양을 사용자 정의할 수 있습니다.
TabControl 컨트롤
속성 이름 설명
정렬 컨트롤에서 탭의 표시 위치를 제어합니다. 기본값은 컨트롤의 상단입니다.
외관 탭 표시 방법을 제어합니다. 탭은 일반 버튼으로 표시되거나 플랫 스타일로 표시될 수 있습니다.
HotTrack true인 경우 마우스 포인터가 컨트롤의 탭 위로 이동하면 해당 모양이 나타납니다.
Multiline true이면 탭을 여러 행에 표시할 수 있습니다.
RowCount 현재 표시된 탭 행 수를 반환합니다
SelectedItem 현재 선택된 탭 페이지의 인덱스를 가져오거나 설정합니다
SelectedTab 현재 선택된 탭 페이지를 가져오거나 설정합니다. 이 속성은 TabPages
TabCount에 있습니다. 인스턴스에서 탭 표시줄의 탭 수를 가져옵니다.
TabPages 탭 컨트롤에서 탭 페이지 컬렉션을 가져옵니다. 이 컬렉션을 사용하여 TabPages 개체를 추가하고 삭제합니다.
컨트롤에 있는 창의 StatusStrip 공통 속성
속성 이름 설명
자동 크기 항목의 이미지와 텍스트를 기준으로 항목의 크기를 자동으로 조정할지 여부
정렬 상단 창 설정 StatusStrip 컨트롤 정렬 옵션은 다음과 같습니다: 가운데, 왼쪽 및 오른쪽
테두리 스타일 창 테두리의 스타일을 설정합니다. 옵션은 다음과 같습니다.
없음: 테두리를 표시하지 않습니다. : 페인이 3차원으로 볼록함. : 페인이 3차원으로 오목하게 표시됨
이미지 페인에 표시되는 아이콘 설정
최소 크기 설정 상태 표시줄의 창 아이콘 최소 너비
봄 지정된 항목이 남은 공간을 채우는지 여부
텍스트 창에 표시되는 텍스트 설정
너비 창 너비 설정 AutoSize 속성 설정에 따라 속성 값은 양식 크기가 변경될 때 변경될 수 있습니다.
Show 메서드는 다음을 나타내는 DialogResult 열거형 값을 반환합니다. 대화 상자의 반환 값
Member 설명
Abort 대화 상자의 반환 값은 Abort입니다(보통 "Abort" 버튼에서 전송됨)?
취소 대화 상자의 반환 값은 취소입니다(보통 "취소" 버튼을 통해 전송됨)?
무시 대화 상자의 반환 값은 무시입니다(보통 "취소" 버튼을 통해 전송됨). "무시" 버튼에서)?
아니요 대화상자의 반환 값은 아니요입니다(보통 "아니요" 버튼에서 전송)?
없음 은 대화 상자에서 아무것도 반환하지 않았습니다. 이는 모달 대화 상자가 계속 실행됨을 나타냅니다.
OK 대화 상자의 반환 값이 OK입니다(일반적으로 "OK"라고 표시된 버튼에서 전송됨)?
재시도 대화 상자의 반환 값은 재시도입니다(보통 "재시도" 버튼을 통해 전송됨).
예 대화 상자의 반환 값은 예입니다(보통 "예" 버튼을 통해 전송됨). )?
Driver
.NET Framework는 프로그램에서 드라이브를 직접 사용할 수 있도록 DriveInfo 클래스와 DriverType 열거형을 제공합니다. DriveInfo 클래스 및 DriverType 열거는 System.IO 네임스페이스에 있습니다.
DriveInfo 클래스
역할: 드라이브 문자, 드라이브 유형, 드라이브의 사용 가능한 공간 등을 포함하여 드라이브에 대한 정보를 결정합니다.
공통 멤버:
필드: DriveFormat( 파일 시스템 형식(예: NTFS 또는 FAT32), DriveType(드라이브 유형), Name(드라이브 이름), TotalSize(총 공간), TotalFreeSpace(사용 가능한 공간)
방법: GetDrives(목록 가져오기) 사용 가능한 드라이브 수)
유형별 열거 유형
열거 값에는 CDRom(광 드라이브), 고정(하드 디스크), 네트워크(네트워크 드라이브), 이동식(플로피 디스크 또는 U 디스크) 등이 포함됩니다.
디렉터리
.NET FrameworkDir에서 제공하는 섹터 클래스와 DirectoryInfo 클래스를 사용하여 프로그램에서 디렉터리를 직접 조작할 수 있습니다. Directory 클래스와 DirectoryInfo 클래스는 System.IO 네임스페이스에 있으며 디렉터리를 생성, 복사, 이동 또는 삭제하는 데 사용할 수 있습니다.
디렉터리 클래스
기능: 정적 클래스, 해당 메서드 멤버를 직접 호출할 수 있지만 각 메서드 멤버 호출은 사용자의 작업 권한을 확인하기 위해 보안 검사를 수행해야 합니다.
공통 메소드 멤버: CreateDirectory(새 디렉토리 생성), Delete(디렉토리 삭제), Exists(디렉토리 존재 여부 확인), Move(디렉토리 이동), GetFiles(파일 목록 가져오기)
DirectoryInfo 클래스
기능: 비정적 클래스(인스턴스화해야 함), 인스턴스를 생성해야 메서드 멤버를 호출할 수 있습니다. 인스턴스를 생성할 때 보안 검사가 수행됩니다.
공통 필드 멤버: Name(디렉터리 이름 추출), Exists(존재 여부), Parent(상위 디렉터리), Root(루트 디렉터리)
공통 메서드 멤버: Create(디렉터리 생성), CreateSubDirectory(하위 디렉터리 생성) , Delete(디렉터리 삭제), MoveTO(디렉터리 이동), GetFiles, GetDirectories 등
코드 예: P197
File
NET Framework는 File 클래스와 FileInfo 클래스를 제공합니다. 프로그램이 파일을 직접 조작하는 것을 촉진합니다. File 클래스와 FileInfo 클래스는 System.IO 네임스페이스에 있으며 파일 생성, 복사, 삭제, 이동, 열기 및 기타 작업에 사용할 수 있습니다.
파일 클래스
특징: 정적 클래스, 해당 메서드 멤버를 직접 호출할 수 있습니다.
공통 메소드 멤버: Open(파일 열기), Create(새 파일 만들기), Copy(파일 복사), Delete(파일 삭제), Exists(파일 존재 여부 확인), Move(파일 이동) ), 바꾸기(파일 바꾸기) ), AppendAllText(새 파일 만들기 및 텍스트 추가), ReadAllText(텍스트 콘텐츠 열기 및 읽기) 등
FileInfo 클래스
기능: 비정적 클래스인 경우 먼저 인스턴스를 생성해야 합니다.
공통 필드 멤버: Name(추출된 파일 이름), Directory(해당 디렉터리), Exists(존재 여부), Extension(파일 확장자), Length(파일 길이), IsReadOnly(읽기 여부) 파일만)
공통 메서드 멤버: Open, Create, CopyTo(새 파일로 복사), Delete, MoveTo(파일 이동), 바꾸기, EnCrypt(파일 암호화), Decrypt(파일 암호 해독) , 등.
코드 예: P198
경로
파일의 위치를 경로라고 합니다. 경로는 드라이브 문자, 디렉터리 이름, 파일 이름, 파일 확장자 및 구분 기호로 구성됩니다.
경로 표현 방법
절대 경로: C:WindowsSystem32notepad.exe 등 드라이브의 루트 디렉터리에서 쓰기 시작
상대 경로: System32nodepad.exe 등 현재 디렉터리 위치에서 쓰기 시작 (현재 디렉터리가 C :Windows라고 가정)
C#은 "" 문자를 이스케이프 문자로 처리하므로 경로를 문자열로 표현하는 경우 두 개의 백슬래시를 사용합니다. 예:
"C:\Windows\ System32\notepad.exe"
C#에서는 "" 문자를 이스케이프 문자로 처리하지 않고 일반 문자로 처리하도록 컴파일러에 메시지를 표시하기 위해 문자열 앞에 "@" 기호를 추가할 수 있습니다. 예:
@"C :WindowsSystem32notepad.exe ”
NET Framework는 프로그램의 파일 및 디렉터리 경로를 관리하는 데 도움이 되는 Path 클래스를 제공합니다. Path 클래스는 System.IO 네임스페이스에 있으며 정적 클래스입니다.
경로 클래스 기능: 드라이브 문자, 디렉터리 이름, 파일 이름, 파일 확장자 및 구분 기호 등과 같은 경로의 각 필드를 작동하는 데 사용되는 정적 클래스입니다.
경로 공통 필드 멤버: PathSeparator(경로 구분 기호), DirectorySeparatorChar(디렉터리 구분 기호), VolumeSeparatorChar(볼륨 구분 기호)
경로 공통 메서드 멤버: GetDirecotryName(디렉터리 이름 가져오기), GetFileName(파일 이름 가져오기), GetExtension(파일 확장자 가져오기) , GetFullPath(전체 경로 가져오기), GetTempPath(운영 체제의 임시 파일 경로 가져오기) 등
흐름에는 다음과 같은 기본 작업이 포함됩니다.
읽기(read): 바이트 배열로 출력하는 것과 같이 스트림에서 특정 데이터 구조로 데이터를 전송하는 것을 의미합니다.
쓰기(write): 예를 들어 특정 데이터 구조에서 스트림으로 데이터를 전송하는 것을 의미합니다. , 바이트 배열의 데이터를 스트림으로 전송합니다.
위치 지정(탐색): 쿼리 또는 스트림에서 현재 위치를 재배치하는 것을 의미합니다.
스트림 운영을 위한 클래스
(1) 스트림 클래스
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 클래스: 데이터를 임시로 저장하기 위해 메모리에 스트림을 생성함을 나타냅니다. 이를 사용하면 하드 디스크에 임시 파일을 생성할 필요가 없습니다.
캐시스트림 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(현재 위치부터 다음 문자까지 모든 문자 읽기) end)
TextWriter 클래스 및 파생 클래스의 일반적인 메서드:
Close(작성기 닫기 및 시스템 리소스 해제), Flush(현재 기록기의 모든 버퍼를 지워 버퍼링된 모든 데이터가 베이스에 기록되도록 함) Device), Write(텍스트 스트림 쓰기), WriteLine(데이터 한 줄 쓰기)
ASP.NET소개
ASP.NET은 그 어떤 것보다 뛰어난 동적 웹 디자인 기술입니다. 동적 웹 디자인 기술이 사용하기 더 쉽습니다. 사용자 상호작용과 데이터 처리에 특히 뛰어난 확장 가능한 웹 애플리케이션 개발 기술입니다.
ASP.NET은 프로그래밍 언어가 아닙니다. .NET Framework를 기반으로 하는 프로그래밍 프레임워크로 웹 애플리케이션을 만드는 데 사용됩니다.
ASP.NET의 구문은 ASP와 호환되지만 ASP 애플리케이션은 ASP.NET 환경에서 직접 실행할 수 없으므로 적절하게 수정해야 합니다.
ASP.NET과 ASP의 가장 큰 차이점은 전자는 컴파일된 동적 웹페이지 기술인 반면, 후자는 해석된 동적 웹페이지 기술이라는 점입니다.
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에 비해 성능이 대폭 향상
유연한 출력 캐싱 기술
유니코드 인코딩을 사용하여 국제화 달성
모바일 장치 지원
우수한 확장성 및 사용성
추적 서비스 및 디버깅기능 제공
.NET Framework에 통합, 강력한 기능
데이터베이스 연결은 ADO.NET 기술을 사용합니다
웹 애플리케이션 디자인을 위한 일반 단계
VS 2005를 사용하여 웹 애플리케이션 디자인을 위한 작업 단계
S1: 새 웹 사이트 만들기
S2: 웹 사이트 위치 설정
S3: 웹 페이지 추가
S4: 웹 양식 디자인
S5: 양식 및 양식 컨트롤 속성 설정
S6: 프로그램 작성
S7: 웹 애플리케이션 실행
S8: 실행 결과 보기
참고, 자세한 내용은 교재를 참조하세요.
(1) 웹 애플리케이션 생성
작동 방법: Visual Studio .NET 2005의 솔루션 탐색기 창에서 웹 사이트 이름을 마우스 오른쪽 버튼으로 클릭하고 " 웹 사이트 생성”을 선택합니다.
(2) 웹 서버가 정상인지 확인
로컬 컴퓨터에 게시하려면 로컬 컴퓨터가 설치IIS
되어 있는지 확인해야 합니다. IIS가 작동하는지 확인하세요. 적절하게
테이블, 레코드 및 필드
관계형 데이터베이스 시스템은 데이터를 구성하는 방법으로 관계형 모델을 사용합니다.
테이블은 일상생활에서 사용되는 테이블과 유사한 공통된 구조로 저장된 유사한 데이터의 집합입니다.
테이블은 관련 정보를 행과 열의 논리적 그룹으로 배열합니다. 테이블의 각 행을 레코드라고 합니다.
컬럼을 필드라고 합니다
데이터베이스
데이터베이스는 여러 테이블의 집합으로 데이터 테이블을 나타내며, 테이블 간의 관계를 설정하여 데이터베이스의 구조를 정의합니다.
기본 키라고 불리는 것은 테이블의 고유 ID 레코드의 필드 또는 필드 집합입니다. 기본 키는 중복 값을 허용하지 않습니다.
외래 키는 다른 테이블을 연결하고 다른 테이블에서 기본 키 역할을 하는 데 사용되는 필드를 말합니다.
색인
관계형 데이터베이스에서는 데이터 검색 속도를 높이기 위해 색인을 사용하는 경우가 많습니다.
기본키나 기타 필드를 인덱싱할 때 데이터베이스 관리 시스템은 인덱스 필드의 내용을 특정 순서로 인덱스 파일에 기록합니다.
데이터를 검색할 때 데이터베이스 관리 시스템은 먼저 인덱스 파일에서 정보의 위치를 찾은 다음 테이블에서 데이터를 읽어옵니다.
각 인덱스에는 인덱스 순서를 결정하는 인덱스 표현식이 있습니다. 인덱스 표현식은 필드이거나 여러 필드의 조합일 수 있습니다.
하나의 테이블에 여러 개의 인덱스가 생성될 수 있으며, 각 인덱스는 데이터 처리 순서를 나타냅니다.
관계
관계형 데이터베이스의 가장 큰 장점은 불필요한 데이터 중복을 피할 수 있다는 것, 즉 중복된 데이터가 포함된 테이블을 중복된 데이터 없이 여러 개의 간단한 테이블로 분할하고, 테이블 간의 관계를 설정할 수 있다는 것입니다. 관련 테이블의 레코드를 검색합니다.
테이블 간의 관계에서는 메인 테이블을 상위 테이블, 관계를 통해 연결된 다른 테이블을 하위 테이블이라고 부르는 것이 관례입니다.
테이블 간에는 4가지 유형의 관계가 있을 수 있습니다.
일대일 관계: 상위 테이블의 레코드는 하위 테이블의 최대 하나의 레코드와만 일치할 수 있으며 그 반대의 경우도 마찬가지입니다.
하나 -대다 관계: 하위 테이블의 여러 레코드와 관련된 상위 테이블의 레코드를 나타냅니다. 예를 들어 고객 테이블과 주문 테이블의 경우 각 주문은 한 명의 고객과만 관련되고 각 고객은 여러 주문을 가질 수 있으므로 고객 테이블과 주문 테이블은 일대다 관계입니다.
-대일 관계: 일대다에 대한 보완, 즉 상위 테이블의 여러 레코드가 하위 테이블의 하나의 레코드와 관련됩니다.
다대다 관계: 상위 테이블의 여러 레코드를 나타냅니다. 테이블과 관련된 하위 테이블의 여러 레코드.
SQL 소개
SQL(Structured Query Language) 언어는 쿼리, 조작, 정의, 제어 기능을 포함하는 포괄적이고 일반적인 관계형 데이터베이스 언어입니다.
현재 SQL 표준에는 3가지 버전이 있습니다.
SQL-89
SQL-92
SQL3
Microsoft SQL Server에서 사용하는 Transact-SQL은 SQL-92 표준에서 확장되었습니다.
SQL의 구성
SQL은 명령, 절, 연산자 등의 요소가 결합되어 데이터를 생성하고 업데이트 조작하는 명령문으로 구성됩니다.
SQL 명령은 DDL(데이터 정의 언어) 명령과 DML(데이터 조작 언어) 명령의 두 가지 범주로 나뉩니다. DDL 명령은 주로 create, drop, alter 명령문을 포함하여 새 데이터베이스, 필드 및 인덱스를 생성하고 정의하는 데 사용됩니다. DML 명령은 데이터베이스에서 데이터를 정렬, 필터링 및 추출하는 쿼리를 만드는 데 사용됩니다. 여기에는 주로 선택, 삽입, 업데이트 및 삭제 문이 포함됩니다. P258
SQL 절은 선택하거나 조작할 데이터를 정의하는 데 사용됩니다.
select 문
select 문의 기능은 기존 데이터베이스에서 데이터를 검색하는 것입니다.
from 절 은 데이터 소스를 지정합니다. 즉, 레코드가 어느 테이블에서 왔는지 나타냅니다.
where 절 은 레코드를 선택할 때 충족해야 할 조건을 지정합니다.
그룹 기준 절은 레코드를 그룹화합니다.
with 절은 group by 절을 사용하여 쿼리에 구체적으로 표시할 레코드를 결정합니다. have 절을 사용하면 지정된 조건을 충족하는 그룹을 표시할 수 있습니다.
order by 절은 레코드를 정렬합니다.
문의 예는 P258-260을 참조하세요.
delete 문
delete 문의 기능은 from 절에 나열되고 where 조건을 충족하는 하나 이상의 테이블에서 레코드를 삭제하는 것입니다. 절.
예:
OrderId=16인 Orders에서 삭제
insert 문
insert 문은 테이블에 레코드를 추가하는 데 사용됩니다.
예:
주문에 삽입
(CustID,ProductID,OrderDate,SendDate,Qty)
values('2','5','2008-8-12','2008- 8 -13',1)
update 문
update 문은 특정 조건에 따라 특정 테이블의 필드 값을 업데이트합니다.
예:
update Products set Price=8900, 여기서 Products.ProductId=3
ADO.Net 개요
ADO.NET은 Microsoft의 가장 강력한 최신 데이터베이스 액세스 기술입니다. 다양한 데이터베이스에 저장된 데이터에 쉽게 접근하고 처리할 수 있습니다.
ADO.NET은 데이터 처리를 위해 많은 클래스를 수집합니다. 이러한 클래스에는 인덱싱, 정렬, 탐색 및 업데이트와 같은 강력한 데이터 액세스 및 처리 기능이 있습니다.
ADO.NET은 .NET Framework에 통합되어 있으며 C#과 같이 .NET을 지원하는 모든 컴퓨터 언어에서 사용할 수 있습니다.
ADO.NET에는 주로 System.Data 네임스페이스와 중첩된 네임스페이스는 물론 system.Xml 네임스페이스와 같은 데이터 액세스와 관련된 일부 특수 클래스도 포함됩니다.
데이터 공급자
데이터 공급자는 DataSet과 데이터베이스 간의 연결을 제공하고 데이터베이스에 액세스하기 위한 일련의 인터페이스도 포함합니다. 다양한 데이터 소스의 데이터는 데이터 제공자가 제공하는 응용 프로그래밍 인터페이스(API)를 통해 쉽게 접근할 수 있습니다.
.NET 데이터 공급자에는 다음이 포함됩니다.
System.Data.SqlClient 네임스페이스에서 Microsoft SQL Server 데이터 소스에 사용되는 SQL Server .NET 데이터 공급자,
다음에 사용되는 OLE DB .NET 데이터 공급자 OLE DB 노출 데이터 소스는 System.Data.OleDb 네임스페이스에서 나옵니다.
ODBC.NET 데이터 공급자는 ODBC에 사용됩니다.
System.Data.OracleClient 네임스페이스의 Oracle 데이터 소스용 Oracle .NET 데이터 공급자입니다.
데이터 공급자
.NET 데이터 공급자에는 4개의 핵심 개체가 있습니다.
연결 개체는 데이터 소스와의 연결을 설정하는 데 사용됩니다.
명령 개체는 데이터 소스에서 지정된 명령을 실행하는 데 사용됩니다. 🎜>DataReader 개체 데이터 소스에서 정방향 읽기 전용 데이터 스트림을 반환하는 데 사용됩니다.
DataAdapter 개체는 데이터에 대한 다양한 작업을 데이터 소스의 해당 SQL 문으로 자동 변환합니다.
DataSet
ADO.NET의 핵심 구성 요소는 DataSet입니다.
DataSet은 데이터베이스에 의존하지 않는 독립적인
데이터 세트라고 생각하면 됩니다. 독립이란 데이터 연결이 끊어지거나 닫혀도 DataSet을 계속 사용할 수 있음을 의미합니다. ADO.NET에서 DataSet은 데이터 소스에서 얻은 데이터를 처리하는 데 특별히 사용됩니다. 기본 데이터가 무엇이든 동일한 방법을 사용하여 다양한 데이터 소스에서 얻은 데이터를 처리할 수 있습니다.
DataSet은 내부적으로 XML을 사용하여 데이터를 설명합니다. XML은 플랫폼과 데이터에 독립적이며 복잡한 데이터 관계를 설명할 수 있는 데이터 설명 언어입니다.
ADO.NET 데이터베이스 작업 프로세스
먼저 연결 개체를 사용하여
데이터베이스에 연결합니다 데이터베이스 실행 명령이나
저장 프로시저를 실행하는 경우 반환 결과가 필요하지 않은 경우 Command 개체를 사용할 수 있습니다. DataReader 개체는 데이터 소스에서 정방향 전용 및 읽기 전용 데이터 스트림을 읽는 데 사용됩니다.
DataSet은 데이터 소스와 독립적인 일관된 관계형 프로그래밍 모델을 제공하는 메모리 상주 데이터 표현입니다. DataSet은 테이블, 제약 조건, 테이블 간의 관계를 포함하는 전체 데이터 세트를 나타냅니다.
기존 데이터 소스와의 상호 작용은 DataAdapter를 통해 제어됩니다. DataAdapter 개체는 데이터 소스에서 데이터를 얻고, DataSet과 테이블 및 제약 조건을 채우고, DataSet의 변경 사항을 데이터 소스에 다시 제출하는 데 사용됩니다.
연결 개체를 사용하여 데이터베이스에 액세스
데이터베이스에 연결하는 단계
(1) 연결 문자열 정의
SQL Server 인증 사용:
데이터 소스=서버 이름=데이터베이스; 이름; 사용자 ID =사용자 이름;Pwd=비밀번호
Windows 인증 사용:
데이터 소스=서버 이름;초기 카탈로그=데이터베이스 이름;
통합 보안=True
(2) 연결 개체 생성
SqlConnection 연결 = new SqlConnection(connString);
(3) 데이터베이스에 대한 연결 열기
Connection.Open();
Command 개체를 사용하여 데이터베이스에 액세스
ExecuteNonQuery( ):
( 1) 연결 개체 생성;
(2) SQL 문 정의
(3) 명령 개체 생성
(4) ExecuteNonQuery() 메서드 실행; 반환된 결과에 따라 처리합니다.
위 내용은 C#의 개념 시스템 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!