일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- for loop
- numpy
- graphene-django
- Django
- SQL
- python
- FastAPI
- tkinter Radio 동적버튼
- allauth
- array
- flask
- GraphQL
- check_password
- Django-allauth
- Today
- Total
객
[교육원] 변수 ,구조체 및 배열 정리 본문
★ 타입(Type)
┌─ 값(Value) Type ─┬─ 내장형 : 이미 정의가 내려저 있는 형식
│ │
│ │ - 정수형 : byte , sbyte , short , unit
│ │ - 실수형 : float(4 byte) , double(8 byte)
│ │ , decimal(16 byte)
│ │ - 논리형 : bool(1 byte)
│ │ - 문자형 : char(2 byte) , string
│ │
│ ├─ 열거형 : 사용자 정의 형식
│ │
│ └─ 구조체 : 사용자 정의 형식
│
└─ 참조(Reference) Type
★ 변수 사용
Ⅰ. 파괴성 - 새로운 데이터가 변수안에 들어가면 기존에 데이터는 지워지고 새로운 데이터가 저장된다.
- 객체가 수행을 끝나고 나서 사라질 때 정리 작업을 수행한다.
- 인수를 가질수도 없으며 리턴 되어지는 값도 없다.
- 오버로딩 할 수 없다.
Ⅱ. 전역 변수 , 지역 변수라는 개념이 없다.
- 변수의 Life Cycle만 기억한다.
- 감싸고 있는 블럭({}) 안에서만 변수 사용이 가능 하다.
ⅰ. 변수의 형식
[Type][v_name] : 변수 사용 준비
-> 메모리(스택)에 예약 , 초기값이 들어올 경우 할당.
[Type][v_name] = [value]
-> value데이터 범위가 지정한 타입과 일치 해야 한다.
Ⅱ. 인스턴스 영역 : 선언된 멤버 변수는 클래스가 소멸 되는 시점 까지 사용이 가능 하다.
Ⅳ. char Type - 문자의 종류를 판별 하는 함수를 제공 한다.
(islower() , isupper() , isdigit() , isletter() , isnumber())
IsDigit | 유니코드 문자가 10진수인지 여부를 나타냅니다. |
IsLetter | 유니코드 문자가 자모인지 여부를 나타냅니다. |
IsLower | 유니코드 문자가 소문자 자모인지 여부를 나타냅니다. |
IsLetterOrDigit | 유니코드 문자가 자모인지 아니면 10진수인지 여부를 나타냅니다 |
IsNumber | 유니코드 문자가 숫자인지 여부를 나타냅니다. |
IsUpper | 유니코드 자모가 대문자인지 여부를 나타냅니다. |
Ⅴ예제 소스
- 오버 로딩 , 변수 선언 , char type문자 판별 종합적이 소스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace KH_DOTNET63_4
{
class Program
{
static void Main(string[] args)
{
// 변수의 lift cycle
INT i = new INT();
i.integer1();
//오버로딩 - 인수의 개수가 같고 메소드의 이르이 같은 메소드를 여러개 정의 할 수 있다.
Console.Write("값 설정1 : ");
char c = Convert.ToChar(Console.ReadLine());
i.Char(c);
Console.Write("값 설정2 : ");
char d = Convert.ToChar(Console.ReadLine());
i.Char(d);
}
}
class INT
{
int i;
public void Char(char c) // 호출 받는 곳은 호출 한 곳의 타입과 값의 갯수가 같아야 함
{
if (char.IsNumber(c)) // 메인 부터 넘겨 받은 값이 숫자인지 검사하는 함수
{
Console.WriteLine("메인으로 부터 넘겨받은 {0}는 숫자입니다.", c);
}
else if(char.IsLetter(c)) // 넘겨 받은 값이 문자 인지를 검사한는 함수.
{
if (char.IsUpper(c)) // 넘겨 받은 값이 대문자 인지를 검사하는 함수
{
Console.WriteLine("메인으로 부터 넘겨받은 {0}는 대문자입니다.", c);
}
else if (char.IsLower(c)) // 넘겨 받은 값이 소문자 인지를 검사하는 함수
{
Console.WriteLine("메인으로 부터 넘겨받은 {0}는 소문자입니다.", c);
}
}
}
//인스턴스 영역 : 선언된 멤버변수는 클래스가 소멸 되는 시점까지 사용이 가능 하다.
public void integer1()
{
//이곳에 선언된 변수들은 메소드가 호출될때 생성되었다가 메소드의 종료 블럭이 끝나면 변수는 사용 못함.
i = 0; //초기값 설정.
integer2();
Console.WriteLine("변수의 i의후 => {0}", i);
}
void integer2()
{
i = 2;
}
}
}
★ 구조체(Struct) (값 타입)
- 여러개의 데이터 타입을 하나의 구조체로 접근하고 저장 할 수 있음.
- 변수들의 집합체.
- 클래스 내외부에서 선언 될 수 있다.
- 형식 :
struct name {
각 변수 타입과 정의
}
- 구조체를 사용 할 경우에는 클래스와 동일하게 선언.
★ 캡슐화(보안성)
★ 값전달 -
★ 생성자 - 외부에서 값을 변경 하지 못하도록 숨겨야 하는데 이것을 캡슐화 이고 캡슐화한 메소드에 값을 전달
- 생성자를 만들지 않으면 컴파일러 스스로 생성자를 만든다.
- 생성자는 오버로딩이 가능 하다.
★ 파괴자 - 생성자의 반대되는 메서드.
- 객체가 수행을 끝나고 나서 사라질 때 정리 작업을 수행한다.
★ 보안성 -
★Array(배열)
같은 타입의 여러 데이터 를 마치 하나의 변수에 다가 저장 .
선언방식:
type[index] v_name new type[만들저장장소]; 메모리 힙영역에 선언과 동시에 활당됨
int[] i = new int[5];
i[0] = 1 // 저장
선언과 동시에 활당
int[] i = {1,2,3,4,5} -1차원 배열
int[,] = new int[2,5] - 2차원 배열
저장 방식은 i[0,0] = 1, i[0,1] = 2
직접 대입 방식
int [] i = {{1,2,3,4,5},{6,7,8,9,10}} - 선언과 동시에 값 대입
★ 구조체 예제 소스1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace KH_DOTNET63_4
{
class Program
{
struct empinfo
{
// 사원 번호 이름 급여 보너스 나이
//empno name sal comm age
//생성자 - 구조체 명과 메서드 명이 동일 한 것을 생성자
public int empno, sal, comm, age;
public string ename;
}
static void Main(string[] args)
{
INT i = new INT();
empinfo ei;
ei.empno = 1001;
ei.ename = "아무개";
ei.sal = 3500;
ei.comm = 2000;
ei.age = 37;
Console.WriteLine("사원번호: {0} \n 성 명: {1} \n 급 여: {2} \n 보너스 : {3} \n 나 이 : {4}\n", ei.comm, ei.ename, ei.sal, ei.comm, ei.age);
}
}
}
★ 구조체 예제 소스2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace kh_dotnet63_4_2
{
class Program
{
static void Main(string[] args)
{
empinfo ei = new empinfo(1000, "아무개", 3500, 3000, 42);
//ei.output();
Console.WriteLine(ei.ename);
}
}
struct empinfo
{
public int empno, esal, ecomm, eage;
public string ename;
public empinfo(int pempno , string pename , int pesal , int pecomm , int peage)
{
empno = pempno;
ename = pename;
esal = pesal;
ecomm = pecomm;
eage = peage;
}
public void output()
{
//Console.WriteLine("");
Console.WriteLine("사원번호: {0} \n 성 명: {1} \n 급 여: {2} \n 보너스 : {3} \n 나 이 : {4}\n",empno, ename , esal,ecomm, eage);
}
}
}
'[PL] > C# & WPF' 카테고리의 다른 글
[C#] 연산자 오버로딩 , 프로퍼티 예제 (0) | 2011.06.16 |
---|---|
참조 , 값 (0) | 2011.06.08 |
[교육원]기본문법 (0) | 2011.06.01 |
[교육원]간단한 신상명세 (0) | 2011.06.01 |
[교육원] c# 문법 (0) | 2011.06.01 |