- 많은 양의 정적 객체를 초기화 할 때 속도가 향상됩니까?
- 컴파일 타임이나 다른 종류의 이점이 있습니까?
예컨대 :C# 개체/목록 이니셜 라이저 구문의 장점은 무엇입니까?
IList<object> objects = new List<object>();
objects.Add(new object());
objects.Add(new object());
objects.Add(new object());
예컨대 :C# 개체/목록 이니셜 라이저 구문의 장점은 무엇입니까?
IList<object> objects = new List<object>();
objects.Add(new object());
objects.Add(new object());
objects.Add(new object());
코드의 두 조각 사이에 실행 시간 차이가 없습니다 : 대
IList<object> objects = new List<object>
{
new object(),
new object(),
new object()
};
. 둘 다 같은 일리노이로 컴파일됩니다.
이니셜 라이저 구문의 기본 이점은 기본적으로 여러 명령문에 반대되는 단일 식의 목록을 초기화한다는 것입니다. 예를 들어, 사용자가 명시 적으로 임시 변수를 만들지 않고하는 방법에서 목록을 반환하는 데 사용할 수 (컴파일러는 일시적이 당신을 위해 생성) :
public List<T> MakeListOf3<T>(T val)
{
return new List<T> { val, val, val };
}
반대로 :
public List<T> MakeListOf3<T>(T val)
{
var list = new List<T>();
list.Add(val);
list.Add(val);
list.Add(val);
return list;
}
꽤 있다고 고작했지만 아이디어를 얻었습니다.
기본적으로 구문 설탕이며 개인적인 취향과 미학의 문제입니다.
또한 컬렉션 초기화 프로그램과 개체 초기화 프로그램을 결합 할 수도 있습니다. 매우 복잡한 구조를 한 번 실행하면됩니다. 예 :
Product product = new Product
{
Name = "Dog food",
Price = 9.95,
Manufacturer =
{
Name = "Dog food producer"
Location = "Some location"
},
SimilarProducts =
{
new Product { Name = "Cat food" },
new Product { Name = "Bird food", Price = 5.50},
new Product
{
Name = "Guinea Pig food",
Price = 5.50
SimilarProducts =
{
new Product { Name = "Guinea Pig shampoo" },
new Product { Name = "Guinea Pig toofpaste" }
},
},
},
}
1 - 더 읽기 쉽고 보일러가 적게 늘어나는 구문입니다. 2 -'new object()'는 의미가 없습니다. 3 -'IList
코드의 모든 개체에 var를 사용하지 않으면 컴파일 시간이 오래 걸릴 수 있습니까? :) IDictionary ....과 같은 큰 이름을 가진 객체에 대해서는 절대로 사용하지 않는 법을 배웠습니다. –
아니요. 형식을 잘못 입력하는 것은 컴파일러에게는 쉬운 일이 아닙니다. @HighCore 당신이 대답 대신 대답으로 써야한다고 생각합니다. –