readonly

변수 앞에 위치하면 해당 변수는 읽기 전용이 되어 해당 변수가 정의된 클래스나 구조체, 메서드 등에서만 수정이 가능하며 readonly로 선언된 변수는 선언할 때 또는 생성자에서 값을 할당해야한다.

 

public class MyClass
{	
	readonly int myReadOnlyInt;
    public MyClass(int value)
    {
    	myReadonlyInt = value;
    }
}

위 코드에서 myReadOnlyInt는 읽기 전용으로 선언되었기 때문에 생성자에서 값을 할당한 이후에는 변경이 불가능하다.

 

상수를 선언한다는 점에서 const와 비슷한데 둘의 차이를 비교할 필요가 있다.

 

const vs readonly

초기화 방법

const와 readonly는 초기화 방법에서부터 차이가 있다.

// 반드시 선언과 동시에 초기화 필요
const int constNum = 10;

// 선언에서 뿐만 아니라 생성자에서 값을 할당해서 초기화 할 수 있다.
readonly int readonlyNum_1 = 10;
readonly int readonlyNum_2;
public MyClass(int value)
{
	readonlyNum_2 = value;
}

 

사용 범위

const는 클래스 멤버 또는 데이터 형식 멤버로 선언할 수 있지만 클래스 멤버 중에서도 인스턴스 멤버는 const 키워드를 사용할 수 없다. 즉 인스턴스 변수, 인스턴스 메서드 등에서는 const 키워드 사용이 불가능하다.

public class MyClass
{
    public const int number = 10;
    public void Test()
    {
        int test = number;
    }
}

public static class MyStaticClass
{
    public const int number = 20;
    public static void Test()
    {
        int test = number;
    }
}

public class OtherClass()
{
    public void TestMethod()
    {
        MyClass instance = new MyClass();
        // 접근 불가능함
        int test1 = instance.number;
        
		// static 클래스 인스턴스화 안됨
        //MyStaticClass staticInstance = new MyStaticClass();
        // 직접 호출가능
        int test2 = MyStaticClass.number;
    }
}

 

실행시간

const는 컴파일 시간에 값이 결정되기 때문에 런타임 성능이 상대적으로 좋다.

readonly는 런타임에 값을 할당할 수 있기 때문에 const보다는 조금 더 느릴 수 있다. 

그렇기 때문에 런타임에 값을 결정해야할 경우에만 readonly를 사용하고 그 이외에는 const를 사용하는게 낫다.

 

public class MyClass
{
    public const int number = DateTime.Now.Year; // 컴파일 에러 발생
    public readonly int year = DateTime.Now.Year; // 실행 시간에 값이 결정됩니다.
}

 

const와 readonly의 가장 큰 차이점은 값이 결정되는 시점이다.

const는 컴파일 타임 readonly는 런타임

 

따라서 애초에 고정된 값이라면 const를 사용하지만 인스턴스가 생성될 때 값을 할당하고 그 이후에 변경되지 않도록하려면 readonly를 사용하면된다.

728x90
반응형

Partial

클래스, 구조체, 인터페이스 등의 선언에 사용된다.

partial 제한자로 선언된 클래스, 구조체, 인터페이스 등은 여러 파일에 나누어 작성할 수 있다.

 

public class Person
{
	public string FirstName { get; set; }
    public string LastName { get; set; }
    
    public void SayHello()
    {
    	Console.WriteLine($"Hello, my name is {FirstName} {LastName}.");
    }
}

Person이라는 클래스가 하나의 파일에 선언되고 작성되어 있다. 이 클래스를 여러 파일로 나누어 선언하기 위해 partial 키워드를 사용하면 다음과 같이 사용할 수 있다.

 

// Person.cs
public partial class Person
{
	public string FirstName { get; set; }
    public string LastName { get; set; }
}

// Person_SayHello.cs
public partial class Person
{
	public void SayHello()
    {
    	Console.WriteLine($"Hello, my name is {FirstName} {LastName}.");
    }
}

 

Person.cs 파일과 Person_SayHello.cs 파일은 같은 네임스페이스 안에 있으며 partial 키워드를 사용해 클래스를 선언하였기 때문에 다른 파일에서 Person 클래스를 동일하게 partial 키워드를 사용해 선언하면 이 클래스는 하나의 클래스로 인식된다. partial로 선언된 클래스는 컴파일 시점에 자동으로 하나의 클래스로 합쳐지기 때문에 별도의 참조가 필요하지 않다.

 

이러한 기능은 특히 협업에서 용이하게 사용이 가능하다.

큰 규모의 코드를 개발하기 위해서 여러 개발자가 협업을 하게 된다면 동시에 하나의 클래스나 구조체를 작성하는 상황이 있다. 이런 상황에서 partial 키워드를 사용하여 하나의 클래스를 여러 파일에 나누어 각자 작성할 수 있고 이렇게 하면 동시에 작성을 각자가 코드를 작성하더라도 서로 영향을 주지 않고 작업을 진행할 수 있다.

 

양이 많은 코드의 경우 하나의 파일에 모두 작성하게 되면 보기나 수정이 힘들어진다. 이때 partial 키워드를 사용하면 코드를 작은 단위로 분할하여 작성할 수 있기 때문에 코드 가독성도 좋아지고 유지보수도 편리해진다. 

728x90
반응형

글을 작성하다 보면 제목이나 본문을 설정하거나 글자의 스타일을 바꾸는 등 마우스를 잡아야 하는 일이 많아졌다.

따라서 마우스와 키보드를 왔다 갔다 하는 동선을 줄여서 글을 작성하는 시간을 단축시키기 위해 티스토리에서 지원하는 단축키를 정리해 놓기로 한다.

 

블로그 단축키

이전 글  A
다음 글  S
관리자 페이지 이동 :  Q

 

추가 단축키

추가 단축키의 경우 스킨마다 적용된 게 다를 수 있기 때문에 스킨 편집 > html에서 단축키를 확인해 보는 게 정확하다.

현재 사용하고 있는 스킨의 경우 W, E, R, H의 추가 단축키가 있다.

 

글쓰기  W
스킨편집하기  E
홈으로  H
//추가 단축키
var key = new Array();
key['w'] = "/admin/entry/post/";
key['e'] = "/manage/design/skin/edit#/";
//key['r'] = "/admin/plugin/refererUrlLog/";
key['h'] = "/";

단축키를 누르면 해당 키에 할당된 문자열을 주소창에 넣고 페이지를 이동하는 방식으로 원하는 대로 커스텀이 가능하다.

스킨에서 기본으로 설정한 단축키 중에서 R의 기능이 불분명하다. 문맥상 관리자 페이지에서 plugin 항목의 refererUrlLog로 지정된 페이지로 이동하는 것 같은데 현재는 admin/plugin부터가 이동이 되지 않기 때문에 일단 주석처리하기로 한다.

 

 

글쓰기

글쓰기에서 사용할 수 있는 단축키는 글쓰기 페이지에서 더 보기를 통해 확인할 수 있다.

티스토리 글쓰기 단축키

단축키 목록 ctrl + /
실행 취소 ctrl + Z
다시 실행 ctrl + shift + Z or ctrl + Y

 

스킨마다 다를 수도 있지만 현재 블로그 기준으로는 이렇게 동작한다.

제목 1, 2, 3 - html 태그 h2, h3, h4

본문 1, 2, 3 - 폰트 사이즈 18, 16, 14이다.

 

제목 변경  ctrl + alt + 1 (제목 1 > 제목 2 > 제목 3 > 제목 1...)
본문 변경 ctrl + alt + 2(본문 1 > 본문 2 > 본문 3 > 본문 1...)

 

태그변경

<h1 ~ h6>  alt + shift + 1 ~ 6
<p> alt + shift + 7
<div> alt + shift + 8
인용 변경 ctrl + alt + 3
서체 변경 ctrl + alt + T
목록 변경 ctrl + alt + 4
정렬 ctrl + alt + 5
굵게 ctrl + B
기울임 ctrl + I
밑줄  ctrl + U
취소선  ctrl + alt + J
글자색  ctrl + alt +[
배경색  ctrl + alt + ]
링크 삽입 ctrl + K
코드 블록 ctrl + alt + ,
특수 문자 ctrl + alt +.
이모티콘 ctrl + alt + E

 

728x90
반응형

'Life' 카테고리의 다른 글

오랜만에 만족스러운 영화관람! 슈퍼 마리오 브라더스  (1) 2023.05.08
베트남 콘삭 커피  (0) 2023.04.09
장 줄리앙 전시회 - 그리고 거기  (1) 2023.03.27
재벌집 막내아들  (1) 2023.01.08
러버덕과 러버덕  (1) 2023.01.07

+ Recent posts