Hãy xem xét một bản sao đúng nguyên văn của mẫu Builder Bloch (với những thay đổi được thực hiện cho cú pháp C# 's):Tại sao không Builder làm việc mẫu của Bloch trong C#
public class NutritionFacts
{
public int ServingSize { get; private set; }
public int Servings { get; private set; }
public int Calories { get; private set; }
...
public class Builder
{
private int ServingSize { get; set; }
private int Servings { get; set; }
private int Calories { get; set; }
public Builder(int servingSize, int servings)
{
ServingSize = servingSize;
Servings = servings;
}
public Builder Calories(int calories)
{ Calories = calories; return this; }
public NutritionFacts Build()
{
return new NutritionFacts(this);
}
}
private NuitritionFacts(Builder builder)
{
ServingSize = builder.ServingSize;
Servings = builder.Servings;
Calories = builder.Calories;
}
}
Nếu bạn cố gắng chạy này, biên dịch C# sẽ phàn nàn rằng nó không có quyền truy cập vào các thuộc tính riêng của Builder. Tuy nhiên, trong Java, bạn có thể làm điều này. Quy tắc nào khác trong C# ngăn cản bạn truy cập các thuộc tính riêng tư của các lớp lồng nhau?
(Tôi nhận ra rằng mọi người đã đưa ra lựa chọn thay thế here và điều đó thật tuyệt. Tôi quan tâm là lý do bạn không thể sử dụng mẫu Java mà không sửa đổi).
Xin chào, tôi đã hỏi câu hỏi chính xác này.Got một số câu trả lời khá hay. Ở đây chúng tôi đi [http://stackoverflow.com/questions/512651/how-is-javas-notion-of-static-different-from-cs](http://stackoverflow.com/questions/512651/how-is -javas-notion-of-static-different-from-cs) – uriDium