KO CSharp Keyword this - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

C#: this

ํ•ธ๋“œ๋ถ C# ยท ์‹ค์šฉ ๊ฐ€์ด๋“œ

ํ˜„์žฌ ์ธ์Šคํ„ด์Šค, ์ด ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž, ์ธ๋ฑ์„œ ๋˜๋Š” ํ™•์žฅ ๋ฉ”์„œ๋“œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ (Example.cs)

์ด ์˜ˆ์ œ๋ฅผ Example.cs๋กœ ๋”ฐ๋กœ ์ €์žฅํ•˜๊ณ  ์ด ํŽ˜์ด์ง€์˜ ๋‹ค๋ฅธ ์˜ˆ์ œ์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”.

Example.cs:

// PROJECT-EXAMPLE
System.Console.WriteLine(new Item(7).Count);
class Item
{
    public int Count;
    public Item(int count) { this.Count = count; }
}

๊ฒฐ๊ณผ:

7

ํ†ต์‚ฌ๋ก 

this.field / Constructor() : this(...) / this[int index]

์˜ˆ์‹œ 1: ๊ธฐ๋ณธ ํ˜•ํƒœ

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        Entity entity = new Player("Archer");
        Console.WriteLine(entity.Describe());
        Console.WriteLine(entity.Code);
    }
}
public interface ILabel { string Label { get; } }
public abstract class Entity : ILabel
{
    private readonly string name;
    protected Entity(string name) { this.name = name; }
    protected string Name => name;
    internal int Code { get; set; } = 7;
    public virtual string Label => Name;
    public abstract string Describe();
}
public sealed class Player : Entity
{
    public Player(string name) : base(name) { }
    public override string Label => "Player: " + base.Label;
    public override string Describe() => Label;
}

์˜ˆ 2: ๋˜ ๋‹ค๋ฅธ ์‹ค์ œ ํ˜•์‹

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        NamedCounter value = new();
        Console.WriteLine(value.Describe());
        Counter parent = value;
        Console.WriteLine(parent.Describe());
    }
}
public interface ICounter { int Count { get; } }
public class Counter : ICounter
{
    private int count;
    public Counter() : this(1) { }
    public Counter(int count) { this.count = count; }
    public int Count => count;
    protected internal virtual string Format() => count.ToString();
    public string Describe() => Format();
}
public sealed class NamedCounter : Counter
{
    public NamedCounter() : base(4) { }
    public new string Describe() => "Named: " + base.Describe();
    protected internal override string Format() => "Count=" + Count;
}

๊ณต์‹ ์ถœ์ฒ˜: Microsoft ํ•™์Šต.