C#教科書を身につける.クラスその他、一部クラス、メソッドフィルタ、不変フォーマット、変換演算子
4498 ワード
https://www.youtube.com/watch?v=3RNjm-5jYD4&list=PLO56HZSjrPTB4NxAsEP8HRk6YKBDLbp7m&index=65
同じ名前のクラスを1つ以上使用して開発するグループ部分キーワード FirsetDevloper.cs, SecondDevloper.csクラス FirsetDevloper.cs SecondDevloper.cs Program.cs
2.関数式プログラミングスタイル:方法フィルタリング
オブジェクトの状態は、作成後も変わらず、プログラミングの副作用 を低減する必要があります.共通フィールドreadonlyまたはset専用
public static implicit operator Car(string name) => new Car(name);
1.ローカルクラス
using System;
using System.Collections.Generic;
using System.Text;
namespace testProject
{
public partial class Hello
{
public void Hi() => Console.WriteLine("FirstDeveloper.cs");
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace testProject
{
public partial class Hello
{
public void Bye() => Console.WriteLine("SecondDevleloper.cs");
}
}
using System;
using static System.Console;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace testProject
{
// 이벤트 구독자(Subscriber)
class Program
{
static void Main(string[] args)
{
Hello hello = new Hello();
hello.Hi(); // FirsetDeveloper.cs
hello.Bye(); // SecondDeveloper.cs
}
}
}
2.関数式プログラミングスタイル:方法フィルタリング using System;
using static System.Console;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace testProject
{
class Point
{
// readonly 필드
public readonly int x;
public readonly int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public Point MoveBy(int dx, int dy)
{
return new Point(x + dx, y + dy);
}
}
class Program
{
static void Main(string[] args)
{
Point point = new Point(0, 0);
WriteLine(point.x);
WriteLine(point.y);
// WriteLine(point.x = 10);
// 메서드 체이닝
Point newPoint = point.MoveBy(100, 100).MoveBy(50, 50);
WriteLine(newPoint.x);
WriteLine(newPoint.y);
}
}
}
3.不変形式
using System;
using static System.Console;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace testProject
{
class Point
{
// readonly 필드
public readonly int x;
public readonly int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public Point MoveBy(int dx, int dy)
{
return new Point(x + dx, y + dy);
}
}
class Program
{
static void Main(string[] args)
{
Point point = new Point(0, 0);
WriteLine(point.x);
WriteLine(point.y);
// WriteLine(point.x = 10);
// 메서드 체이닝
Point newPoint = point.MoveBy(100, 100).MoveBy(50, 50);
WriteLine(newPoint.x);
WriteLine(newPoint.y);
}
}
}
using System;
using static System.Console;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace testProject
{
class Circle
{
public int Radius { get; private set; } = 0;
public Circle(int radius) => Radius = radius;
public Circle MakeNew(int radius) => new Circle(radius);
}
class Program
{
static void Main(string[] args)
{
// [1] 생성자를 통해서 반지름 10인 Circle 개체 생성
Circle circle = new Circle(10);
WriteLine($"Radius : {circle.Radius} - {circle.GetHashCode()}");
// [2] 메서드를 통해서 반지름 20인 Circle 개체 새롭게 생성
circle = circle.MakeNew(20);
WriteLine($"Radius : {circle.Radius} - {circle.GetHashCode()}");
}
}
}
4.変換演算子の実装
using System;
using static System.Console;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace testProject
{
class Car
{
public string Name { get; private set; }
public Car(string name) => Name = name;
// 생성자에게 재 전송
public static implicit operator Car(string name) => new Car(name);
}
class Program
{
static void Main(string[] args)
{
Car car1 = new Car("first Car");
WriteLine(car1.Name);
Car car2 = "Second Car";
WriteLine(car2.Name);
}
}
}
Reference
この問題について(C#教科書を身につける.クラスその他、一部クラス、メソッドフィルタ、不変フォーマット、変換演算子), 我々は、より多くの情報をここで見つけました https://velog.io/@ansalstmd/C교과서-마스터하기-31.-Class-기타-부분-클래스-메서드-이닝-불변-형식テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol