<commit_before>---
bg: "Clogo.jpg"
layout: post
comments: true
title:  "C# 강좌 : 제 33강 - 전용 생성자"
crawlertitle: "C# 강좌 : 제 33강 - 전용 생성자"
summary: "C# Private Constructor"
date: 2018-12-30
categories: posts
tags: ['C#']
author: 윤대희
star: true
---

### 전용 생성자 (Private Constructor) ###
----------
전용 생성자는 `특수 인스턴스 생성자`로 **정적 멤버**만 포함하는 클래스에서 사용됩니다. 클래스에서 `public` 생성자가 사용되지 않고 `private` 생성자만 사용될 때 사용합니다.  `private` 한정자는 클래스를 **인스턴스**화 하여 사용할 수 없게합니다. 개체를 하나만 생성해야 할 때 주로 사용합니다. 

<br>

{% highlight c# %}

using System;

class Factor
{
    private Factor() { }
    public static double factor = 0.76923;
    public static double zero_factor()
    {
        return factor = 0.0;
    }
}

{% endhighlight %}

<br>

생성자를 생성하지 않을 경우, **기본 생성자**가 생성됩니다. 그러므로 `private Factor` 생성자를 생성합니다. `private` 한정자를 사용하여 인스턴스화 할 수 없습니다.

`public static`으로 사용하여 `Factor` 클래스에서 해당 **필드**와 **메소드**를 접근가능하게 합니다.

<br>

{% highlight c# %}

Console.WriteLine(Factor.factor);
Console.WriteLine(Factor.zero_factor());
Console.WriteLine(Factor.factor);

{% endhighlight %}

`전용 생성자`로 인하여 생성자가 접근할 수 없기 때문에 `new` 키워드를 통하여 생성할 수 없습니다.

`Factor.*`의 형태로 **필드**와 **메소드**에 접근이 가능합니다.

두 번째 구문부터는 `factor`의 값을 `0.0`으로 초기화하여 항상 `factor`는 `0.0`의 값을 가집니다.



<commit_msg>check<commit_after>---
bg: "Clogo.jpg"
layout: post
comments: true
title: "C# 강좌 : 제 33강 - 전용 생성자"
crawlertitle: "C# 강좌 : 제 33강 - 전용 생성자"
summary: "C# Private Constructor"
date: 2018-12-30
categories: posts
tags: ['C#']
author: 윤대희
star: true
---

### 전용 생성자 (Private Constructor) ###
----------
전용 생성자는 `특수 인스턴스 생성자`로 **정적 멤버**만 포함하는 클래스에서 사용됩니다. 클래스에서 `public` 생성자가 사용되지 않고 `private` 생성자만 사용될 때 사용합니다.  `private` 한정자는 클래스를 **인스턴스**화 하여 사용할 수 없게합니다. 개체를 하나만 생성해야 할 때 주로 사용합니다. 

<br>

{% highlight c# %}

using System;

class Factor
{
    private Factor() { }
    public static double factor = 0.76923;
    public static double zero_factor()
    {
        return factor = 0.0;
    }
}

{% endhighlight %}

<br>

생성자를 생성하지 않을 경우, **기본 생성자**가 생성됩니다. 그러므로 `private Factor` 생성자를 생성합니다. `private` 한정자를 사용하여 인스턴스화 할 수 없습니다.

`public static`으로 사용하여 `Factor` 클래스에서 해당 **필드**와 **메소드**를 접근가능하게 합니다.

<br>

{% highlight c# %}

Console.WriteLine(Factor.factor);
Console.WriteLine(Factor.zero_factor());
Console.WriteLine(Factor.factor);

{% endhighlight %}

`전용 생성자`로 인하여 생성자가 접근할 수 없기 때문에 `new` 키워드를 통하여 생성할 수 없습니다.

`Factor.*`의 형태로 **필드**와 **메소드**에 접근이 가능합니다.

두 번째 구문부터는 `factor`의 값을 `0.0`으로 초기화하여 항상 `factor`는 `0.0`의 값을 가집니다.



{'fraction_non_alphanumeric': 0.15742251223491027, 'fraction_numerical': 0.01957585644371941, 'mean_word_length': 3.3570159857904085, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5800319', 'n_tokens_mistral': 1467, 'n_tokens_neox': 1824, 'n_words': 330}