consideri una copia letterale di builder di Bloch (con le modifiche apportate per la sintassi C# 's):Perché non Builder lo schema di lavoro di Bloch in 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;
}
}
Se si tenta di eseguire questo, il compilatore C# si lamentano del fatto che non ha il permesso di accedere alle proprietà private di Builder. Tuttavia, in Java, puoi farlo. Quale regola è diversa in C# che ti impedisce di accedere alle proprietà private delle classi nidificate?
(Mi rendo conto che le persone hanno dato delle alternative here ed è grandioso. Quello che mi interessa è il motivo per cui non è possibile utilizzare il modello Java senza modifiche).
Ciao, ho fatto questa domanda esatta. Ho delle risposte abbastanza buone. Qui andiamo [http://stackoverflow.com/questions/512651/how-is-javas-notion-of-static-different-from-cs](http://stackoverflow.com/questions/512651/how-is -javas-noion-of-static-different-from-cs) – uriDium