>  기사  >  백엔드 개발  >  C# 데이터 유형

C# 데이터 유형

黄舟
黄舟원래의
2017-02-10 15:09:011347검색

C#의 데이터 유형은 숫자 유형, 참조 유형, 포인터 유형의 세 가지 범주로 나눌 수 있습니다. 포인터 유형은 안전하지 않은 코드에서만 사용됩니다.
값 유형에는 단순 유형(예: 문자 유형, 부동 소수점 유형, 정수 유형 등), 컬렉션 유형 및 구조 유형이 포함됩니다. 참조 유형에는 클래스 유형, 인터페이스 유형, 대표 유형 및 배열 유형이 있습니다.

값 유형과 참조 유형의 차이점은 값 유형의 변수 값은 데이터를 직접 포함하는 반면, 참조 유형의 변수는 참조를 객체에 저장한다는 것입니다. 참조 유형 변수의 경우 서로 다른 두 변수가 동일한 개체를 참조하는 것이 전적으로 가능합니다. 이러한 방식으로 한 변수에 대한 작업은 다른 변수가 참조하는 개체에 영향을 미칩니다. 값 유형 변수의 경우 각 변수에는 고유한 값이 있으므로 한 변수에 대한 작업이 다른 변수에 영향을 미칠 수 없습니다.
1 값 유형
모든 값 유형은 기본 생성자라고 하는 매개 변수가 없는 공용 생성자를 암시적으로 선언합니다. 기본 생성자는 초기에 0인 값 유형의 인스턴스(기본값이라고 함)를 반환합니다.
sbyte, byte, short, ushort, int, uint, long, ulong의 경우 기본값은 0입니다.
char의 경우 기본값은 'x0000'
float의 경우 기본값은 0. 0F
double의 경우 기본값은 0. 0D
decimal의 경우 기본값은 0 .0M
bool의 경우 기본값은 false
열거형의 경우 기본값은 0입니다.
구조체 유형의 경우 기본값 설정은 모든 값 유형의 필드를 해당 필드로 설정하는 것입니다. 기본값은 모든 참조 유형의 필드에 빈 값이 할당됩니다.
1.1 단순 유형
C#에서는 단순 유형이라는 사전 정의된 구조 유형 세트를 제공합니다. 단순 유형은 예약어를 사용하여 정의됩니다. 예약어는 System 네임스페이스에 미리 정의된 구조 유형에 대한 가명일 뿐입니다. 예를 들어 int는 예약어인 System입니다. Int32는 System 네임스페이스에 미리 정의된 형식입니다. 단순 유형은 별칭 구조 유형과 완전히 동일합니다. 즉, int를 쓰는 것은 System을 쓰는 것과 같습니다. Int32도 마찬가지입니다. 단순 유형에는 주로 정수, 부동 소수점 유형, 소수 유형, 부울 유형 및 문자 유형이 포함됩니다.
1.1.1 정수 유형
C#은 9가지 정수 유형(sbyte, byte, short, ushort, int, uint, long, ulong 및 char입니다.
Sbyte: 부호 있는 8비트 정수를 나타내며 값 범위는 -128~127입니다.
Byte: 부호 없는 8비트 정수를 나타내며 값 범위는 0~255입니다.
Short: -32768 ~ 32767 범위의 부호 있는 16비트 정수
ushort: -32768 ~ 32767 범위의 부호 있는 16비트 정수를 나타냅니다
Int: -2147483648 ~ 2147483648 범위의 부호 있는 32비트 정수를 나타냅니다.
uint : 0 ~ 4294967295 범위의 부호 없는 32비트 정수를 나타냅니다.
Long: -9223372036854775808 ~ 9223372036854775808 범위의 부호 있는 64비트 정수를 나타냅니다.
Ulong: 부호 없는 64- 비트 정수, 범위는 0 ~ 18446744073709551615입니다.
char: 부호 없는 16비트 정수를 나타내며 값 범위는 0~65535입니다.
Char 유형의 가능한 값은 유니코드 문자 집합에 해당합니다.
Char 유형은 다른 정수 유형과 비교하여 다음 두 가지 차이점이 있습니다.
a, 다른 유형에서 char 유형으로의 암시적 변환이 없습니다. char 유형을 완전히 사용하여 값을 표현할 수 있는 sbyte, byte 및 ushort와 같은 유형의 경우에도 sbyte, byte 및 ushort를 char로 암시적으로 변환하는 기능은 존재하지 않습니다.
b. char 유형의 상수는 문자 형식으로 작성해야 합니다. 정수 형식을 사용하는 경우 유형 변환 접두사가 있어야 합니다. 예를 들어, (char)10에 대한 세 가지 할당 형식이 있습니다.
char chsomechar="A";
char chsomechar="x0065"; 16진수
char chsomechar="u0065; 유니코드 표현
문자 유형에는 다음과 같은 이스케이프 문자가 있습니다.
1, '는 작은따옴표를 나타내는 데 사용됩니다.
2, "는 큰따옴표를 나타내는 데 사용됩니다.
3, \는 백슬래시를 나타내는 데 사용됩니다.
4,십진수 유형은 금융 및 화폐 작업에 이상적입니다. 값 범위는 1.0*10 -28 ~ 7.9* 10 28이며 소수점 이하 28자리까지 정확합니다. 이항 연산의 피연산자 중 하나가 10진수 유형이면 다른 피연산자는 정수 또는 10진수 유형입니다. 정수는 연산 전에 10진수 유형으로 변환됩니다. 10진수 유형에 대한 산술 연산이 10진수 유형의 형식에 비해 너무 작은 값을 생성하는 경우 연산 결과는 0이 됩니다. 10진수 유형의 산술 연산에서 10진수 유형의 형식에 비해 너무 큰 값이 생성되면 오버플로 오류가 발생합니다. 10진수 유형은 부동 소수점 유형보다 정밀도가 높지만 숫자 범위는 상대적으로 작습니다. 부동소수점형 숫자를 소수형 숫자로 변환하면 오버플로 오류가 발생하고, 소수점형 숫자를 부동소수점형 숫자로 변환하면 정확도가 떨어지게 됩니다. 따라서 두 형식 간에는 암시적 또는 명시적 변환이 없습니다. 부울 유형: 값은 true 또는 false입니다. 부울 유형을 다른 유형으로 변환하는 표준은 없습니다.
1.2 열거형
열거형 요소에 사용되는 형식은 long, int, short, byte만 가능합니다. 기본 유형은 int입니다. 첫 번째 요소의 기본값은 0이고, 연속되는 각 요소는 1씩 증가됩니다. 요소에 직접 값을 할당할 수 있습니다. 예:

enum monthnames 
{
January=1,
February, 
march=31
};
可以强制定义其他类型,如:
enum monthnames : byte
{January ,
February,
March
};

1.3 구조 유형
구조 유형도 값 유형이므로 이를 사용하는 목적은 메모리를 절약하기 위한 것입니다. 다음 예는 바이트 유형의 4개 필드를 사용하여 IP 주소를 나타냅니다.

using System;
Struct IP //声明结构
{ 
public byte b1,b2,b3,b4;
}

Class test
{
  public static void Main()
  {
    IP myIP;
    myIP.b1=192;
    myIP.b2=168;
    myIP.b3=1;
    myIP.b4=101;
    Console.Write("{0}.{1}。", myIP.b1, myIP.b2);
    Console.Write("{0}.{1}", myIP.b3, myIP.b4);
}
}

2 참조 유형
참조 유형에는 클래스 유형, 인터페이스 유형, 대표 유형 및 배열 유형이 있습니다.
2.1 클래스 유형
클래스 유형은 데이터 멤버(상수, 필드, 이벤트 등), 함수 멤버(메서드, 속성, 인덱스 등)를 포함하는 데이터 구조를 정의합니다. , 연산, 생성자 및 소멸자 등) 및 중첩 유형이 있습니다. 상속이 지원됩니다.
2.2 객체 유형
객체 유형은 다른 모든 유형의 궁극적인 기본 유형입니다. C#의 모든 형식은 개체 클래스 형식에서 직접 또는 간접적으로 파생됩니다.
2.3 문자열 유형
문자열 유형은 객체에서 직접 상속받은 봉인형 클래스입니다. String 유형의 값은 문자열 리터럴로 작성할 수 있습니다.
2.4 인터페이스 유형
인터페이스는 추상 멤버만 사용하여 참조 유형을 선언하고 메소드 플래그만 갖습니다. 실행 코드는 없습니다. 클래스를 정의할 때 클래스가 인터페이스에서 파생되면 여러 인터페이스에서 파생될 수 있지만 클래스가 클래스에서 파생되면 하나의 클래스에서만 파생될 수 있습니다.
메소드 선언, 예:

interface iface
{
void showmyface();
}

2.5 표현 유형
은 객체의 인스턴스 메소드를 참조하는 정적 메소드 또는 객체 인스턴스에 대한 참조를 나타냅니다. 가장 가까운 것은 c/C++의 포인터이지만 포인터는 정적 함수에만 액세스할 수 있습니다. 즉, 정적 메서드와 인스턴스 메서드 모두에 액세스할 수 있습니다.
2.6 배열
배열은 변수 목록을 포함하는 데이터 구조입니다. 배열 변수는 배열 요소라고도 합니다. 이 유형은 배열 요소 유형이라고도 합니다. 배열의 요소 유형은 배열 유형을 포함하여 모든 유형이 될 수 있습니다. 배열은 아래 첨자를 사용하여 각 배열 요소의 인덱스 번호를 결정합니다. 첨자가 하나만 있는 배열을 1차원 배열이라고 하며, 첨자가 두 개 이상인 배열을
다차원 배열이라고 합니다.
예: int[] a={0, 2, 4, 6, 8}; int[] a=new int[] {0, 2, 4, 6, 8};
또한 다음과 같이 초기화할 수 있습니다: a[2]=4; a[4]=8;
int[] a; /int
int[,] 유형의 1차원 배열 a; //int
int[,,] 유형의 2차원 배열 a; //int
int[ 유형의 3차원 배열 ] []a; / /int 유형의 배열 배열
int[][][]a; //int 유형의 배열 배열
배열의 각 차원의 길이는 배열 유형, 차원의 길이 배열 유형
이 아닌 배열 생성 문에 지정됩니다. 예:
int[,,] a3=new int[10, 20, 30];
a3은 배열 변수입니다. int[,,]는 배열의 길이를 지정하지 않고 배열 생성 문 new int[10, 20, 30]만 지정합니다.
다음 예에서는 배열의 배열을 만듭니다.
int[][] J=new int[3][];
J[0]=new int[] {1, 2, 3};
J[1]=새 정수[] {1, 2, 3, 4, 5, 6};
J[2]=새 정수[] {1, 2, 3, 4, 5, 6 , 7, 8, 9};
위 내용은 C# 데이터형 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.