C# 참조 없음 set 및 get
2762 단어 c#
public sealed class Emplyee
{
public string Name;
public int Age;
}
그리고 데이터가 파괴되지 않도록 이른바 데이터가 봉인되어 이렇게 되었다.public sealed class Emplyee
{
private string _name;
private int _age;
public string GetName()
{
return _name;
}
public void SetName(string name)
{
this._name = name;
}
public int GetAge()
{
return _age;
}
public void SetAge(int age)
{
this._age = age;
}
}
이렇게 하면 나이를 설정할 때 Setage(int age)에 조건을 붙여서 불가능한 상황을 차단할 수 있다는 장점도 있다.
public void SetAge(int age)
{
if(age < 0)
throw new ArgumentOutOfRangeException("age", age.ToString(), "the age must be greater than or equal to 0");
this._age = age;
}
그런데 문제가 생겼어요. 직원의 자료 내용이 많고 속성이 많은데 어떡해요...
물건이 많으면 번거로움이 곧 온다
마이크로소프트가 겁내지 말라고 AIP(automatically implemented property)를 일찌감치 설계해 놓았다
class Employee
{
private string _name;
private int _age;
public string Name
{
get { return (_name); }
set { _name = value; }
}
public int Age
{
get { return _age; }
set
{
if(value < 0)
throw new ArgumentOutOfRangeException("age", _age.ToString(), "the age must be greater than or equal to 0");
_age = value;
}
}
}
좀 편하지 않아요?그러면 안 좋은 점을 얘기해 주세요.
1. 어떤 유형이든 AIP 하나만 있으면 이 유형의 실례를 반서열화할 수 없다
2. 디버그 시 AIP set, get 메서드에 브레이크를 추가할 수 없습니다.
몇 가지 참고 사항:
1. 속성 방법은 이상을 던질 수 있고, 필드는 영원히 던질 수 없습니다.
2. 속성은 out이나ref 매개 변수로 전달할 수 없고 필드는 이렇게 할 수 있다.
class Employee
{
private string _name;
private int _age;
public string Name
{
get { return (_name); }
set { }
}
}
public class TestClass
{
void MethodWithOutParam(out string n) { n = null; }
public TestClass()
{
Employee ee = new Employee();
MethodWithOutParam(out ee.Name);
}
}
슬기로운 VS는 ee.Name 아래에 선홍색 물결선 그리기3. 연속적으로 호출하면 다른 값을 되돌릴 수 있습니다. 왜냐하면 이것은 방법이기 때문입니다.
그렇게 하면 이렇게 상대를 밝힐 수 있어요.
Employee ee = new Employee() { Name = "jeff", Age = 45 };
만약 호출한 것이 본래 무참구조기였다면 이렇게 할 수도 있었다
Employee ee = new Employee { Name = "jeff", Age = 45 };
심지어 이렇게 할 수도 있어요.
var ee = new { Name = "jeff", Age = 45 };
물론 이때의 e도 Employee 실례 대상이 아니다그리고
var people = new[]
{
new { Name = "ghost", Year = 1945 },
new { Name = "fuck", Year = 1954 },
new { Name = "damn", Year = 1938 },
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.