Post

    public uint dwIndex

    {

        get

        {

            // 나중에 데이터 변환해야함..

            return dwIndex;

        }


        set

        {

            dwIndex = value;

        }

    }


dwIndex라는 필드에 값을 넣으니 스택오버플로우 에러가 났다.


StackOverflowException: The requested operation caused a stack overflow.

MsgText.set_dwIndex (UInt32 value) (at Assets/1_Scripte/Data/MsgText.cs:17)

MsgText.set_dwIndex (UInt32 value) (at Assets/1_Scripte/Data/MsgText.cs:17)

MsgText.set_dwIndex (UInt32 value) (at Assets/1_Scripte/Data/MsgText.cs:17)

MsgText.set_dwIndex (UInt32 value) (at Assets/1_Scripte/Data/MsgText.cs:17)

...


확인해보니 dwIndex는 선언된 변수가 아니라 자기가 가지고 있는 속성? 이고

그 속성에 값을 넣어주므로 계속 set이 호출된다는 것이다.

dwIndex = value;

=> 어? dwIndex 속성에 값을 넣어주네? set 프로퍼티 호출!

dwIndex = value;

=> 어? dwIndex 속성에 값을 넣어주네? set 프로퍼티 호출!

무한반복..

그래서 아래와 같이
필드를 선언하고, 그에 따른 프로퍼티 속성을 선언했다.
그리고 값을 넣어줄 때 속성을 넣어주니 더이상 스택 오버 플로우가 일어나지 않았다!

private uint dwIndex

public uint INDEX

{

get

      {

          // 나중에 데이터 변환해야함..

          return dwIndex;

      }


      set

      {

          dwIndex = value;

      }

}



'이전게시판 > C#' 카테고리의 다른 글

StreamReader 한글깨짐 오류  (0) 2018.08.10
배열보다 리스트가 좋은 이유  (0) 2017.04.30
C# var, 무명메서드, 람다식, LINQ 예제  (0) 2016.02.18

Post


StreamReader 한글깨짐 오류


유니티에서 csv 데이터를 읽는데 유독 한글만 깨졌다.

해결방법은 다음과 같다.


1. using System.Text; 포함

2. StreamReader reader = new StreamReader(Path, Encoding.Default);

StreamReader 생성 시 Encoding.Default 인자를 2번째로 인자로 넣어주기


Post

배열보다 리스트가 좋은 이유

- 배열의 크기는 바꿀 수 없다

- 리스트의 크기는 바꿀 수 있다

- 리스트는 요소를 추가하거나 삭제하기 쉽다

- 배열의 요소 수를 늘리려면 원하는 만큼 요소의  수를 늘려서

배열을 새로 만들고 기존 요소를 모두 복사하는 과정이 필요하다.

- 그냥 List가 아닌 ArrayList는 형을 지정하지 않고 사용할 수 있다.


but 배열이 속도가 더 빠르다.


'이전게시판 > C#' 카테고리의 다른 글

프로퍼티 스택오버플로우..  (0) 2018.08.10
StreamReader 한글깨짐 오류  (0) 2018.08.10
C# var, 무명메서드, 람다식, LINQ 예제  (0) 2016.02.18

Post

c# 3.0 이후부터 무명 메소드, 람다식, linq 등.. 편리한 기능이 많이 추가되었다.

평소에 쓰던대로 쓰지~하면서 귀찮아서 미루고 있었는데 이번기회에 정리해본다.



1) C#의 var이란?

var은 임시변수로 어떤 타입이라도 될 수 있습니다.(null은 안됨)

그리고 선언과 동시에 초기화 해줘야 합니다.

만약 처음에 string값을 넣었으면 string값만 담을 수 있습니다.



2) 무명 메소드

무명메소드는 임시로 만드는 함수입니다.

함수속에 함수로 만들어지기 때문에 무명 메소드를 참조하기 위해

delegate와 함께 사용됩니다.



3) 람다식

무명 메소드를 간단하게 나타낸 식을 말합니다.

아래와 같이 무명 메소드를 나타냈다면

Func1 = delegate(String s)

{

Console.WriteLine("{0} \n", s);

};


람다식으로 이렇게 바꿀 수 있습니다.


Func1 = (s) => Console.WriteLine("{0} \n", s);


4) LINQ

데이터베이스 처럼 WHERE, FROM 같은 질의를 C# 내 사용할 수 있습니다.

만약 10 아래의 숫자를 찾을 때 linq가 없다면 전체 Link를 한바퀴 돌면서

매번 10보다 아래인지 확인할 것입니다.

여기에 다른 조건이 2,3개 추가되면 if문이 추가 되어 복잡해집니다.

하지만 linq는 WHERE 조건만 넣으면 찾아줘서 매우 편리합니다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace Main3
{
    class Student
    {
        public string name  { get; set; }
        public int grade    { get; set; }           // 학년
        public int gradeClass { get; set; }         // 등급
    }
 
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            Student[] StudentList =
            {
                new Student() {name = "김학생", grade = 1, gradeClass = 10 },
                new Student() {name = "박학생", grade = 1, gradeClass = 52 },
                new Student() {name = "천학생", grade = 2, gradeClass = 116 },
                new Student() {name = "강학생", grade = 2, gradeClass = 3 },
                new Student() {name = "최학생", grade = 2, gradeClass = 73 },
                new Student() {name = "이학생", grade = 3, gradeClass = 25 },
            };
 
            var student = from st in StudentList
                              where st.grade == 1 && st.gradeClass < 20
                              orderby st.name ascending
                              select st;
 
            foreach (var st in student)
                Console.WriteLine("이름 : {0} 학년: {1} 등급 : {2} \n", st.name, st.grade, st.gradeClass);
        }
    }
}
 
cs


'이전게시판 > C#' 카테고리의 다른 글

프로퍼티 스택오버플로우..  (0) 2018.08.10
StreamReader 한글깨짐 오류  (0) 2018.08.10
배열보다 리스트가 좋은 이유  (0) 2017.04.30
▲ top