1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
void ShiftPoints()
{
if (AllPoints.Count <= MaxCount)
return;
for (int i = 0; i < MaxCount; i++)
{
AllPoints[i] = new Vector3(AllPoints[i].x, AllPoints[i + 1].y,0);
}
AllPoints.RemoveRange(MaxCount, 1);
}
void ShiftPoints()
{
if (AllPoints.Count <= MaxCount)
return;
for (int i = 0; i < MaxCount; i++)
{
AllPoints[i] = AllPoints[i + 1].y;
}
AllPoints.RemoveRange(MaxCount, 1);
}
| cs |
2020년 3월 25일 수요일
c# list 한칸 shift 하기
텍스트파일을 읽어서 딕셔너리로 변환하는 함수
1
2
3
4
5
6
7
8
9
10
11
|
텍스트파일을 읽어서 딕셔너리로 변환하는 함수
public FileToDict()
{
var lines = File.ReadAllLines("fileName.txt");
var dict = lines.Select(line=>line.Split('='))
.ToDictionary(x=>x[0],x=>x[1]);
(왼쪽)=키,(오른쪽)=발류
}
| cs |
c# 컬렉션 나열 방법(LINQ)
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
|
컬렉션을 오름차순으로 정렬한다.
var sortedBooks = books.OrderBy(x=>x.Price);
컬렉션을 내림차순으로 정렬한다.
var sortedBooks = books.OrderByDescending(x=>x.Price);
주의
OrderBy 메서드를 호출하는 것만으로 books 자체가 정렬되는 것은 아니므로 반드시 OrderBy의 결과를 변수에
넣어야한다
books 컬렉션 자체를 정렬하고 싶다면 다른방법을 사용해야한다
예제
books.Sort(BookCompare);
private int BookCompare(Book a, Book b)
{
return a.Price-b.Price; //가격이 싼 순서로 정렬하기 위해 이렇게 지정한다.
//비싼순은 반대로 하면
}
| cs |
2020년 3월 24일 화요일
C# 객체끼리 비교할때
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
|
객체끼리 비교할 때
프로그래밍할 때 등가 연산자(==연산자나 != 연산자)를 사용해 두 개의 객체를 비교할 때가 자주 있습니다.
이때 주의해야 할 점은 값형과 참조형 사이에는 '같다'라는 의미가 다르다는 점입니다.
값형 = 일반적으로 알고있는 같다의 개념
참조형 = 일반적으로 알고있는 개념이 아니다
예
Sample a = new Sample{NUM = 1, STR = "C#"};
Sample b = new Sample{NUM =1 , STR = "C#"};
if(a == b)
{
a와 b는 메모리 상에서 각각 별도로 확보된 객체이므로
이 부분에 작성된 코드는 실행되지 않는다.
}
다음 코드에서는 동일한 참조를 가지고 있으므로 같다고 판정됩니다.
Sample a = new Sample{NUM = 1, STR = "C#"};
Sample b = a;
if(a == b)
{
a와 b는 메모리 상에서 동일한 객체를 참조하므로
이 부분에 작성된 코드가 실행된다.
}
| cs |
stringBuilder를 사용해 문자열을 연결한다.
다음과 같은 코드를 작성하면 인스턴스가 엄청나게 많이 생성되므로 CPU와 메모리 자원을
낭비하게 됩니다.
text+= GetWord(i); //여기서 getword()는 어디선가 단어를 가져오는 함수
낭비하게 됩니다.
text+= GetWord(i); //여기서 getword()는 어디선가 단어를 가져오는 함수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
효과적인 text Append
using system.Text;
var sb = new StringBuilder();
foreach(var word in GetWords())
{
sb.Apped(word);
}
var text = sb.Tostring();
기본적인 초기화
var sb = new StringBuilder(200);
대략적인 길이를 알고있다면 초기화 해주는게 좋다. (자동으로 늘어남)
| cs |
여러 개의 생성자를 정의한다.
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
|
public AppVersion(int major,int minor)
:this(major,minor,0,0){}
public AppVersion(int major,int minor,int revision)
:this(major,minor,revision,0){}
//위에있는 두개의 생성자가 이 생성자를 호출한다.
public AppVersion(int major,int minor,int build,int revision)
{
Major = major;
Minor = minor;
Build = build;
Revision = revision;
}
| cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
C# 4.0 이후에는 옵션 인수를 사용해서 다음과 같이 작성할 수 있습니다.
class AppVersion{
public AppVersion(int major,int minor,int build = 0,int revision =0)
{
Major = major;
Minor = minor;
Build = build;
Revision = revision;
}
}
| cs |
피드 구독하기:
글 (Atom)
git rejected error(feat. cherry-pick)
문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...
-
public class Test : MonoBehaviour { //매출 데이터를 읽어 들이고 Sales 객체 리스트를 반환한다. List<string> list = new List<string> { ...
-
1.람다식을 사용해 다음과 같은 코드를 작성합시다. var numbers = new List<int> { 12, 87, 94, 14, 53, 20, 40, 35, 76, 91, 31, 17, 48 }; 2.List<T>의 ...
-
legacy shader를 써야함 다른거는 변경해도 업데이트가 안됨