Как распечатать BASE_DIR из settings.py из приложения django в терминале?

Причина, по которой вы не можете сделать это, состоит в том, что список доступен для записи. Предположим, что это было законно, и посмотрите, что пойдет не так:

List<Cat> cats = new List<Cat>();
List<Animal> animals = cats; // Trouble brewing...
animals.Add(new Dog()); // hey, we just added a dog to a list of cats...
cats[0].Speak(); // Woof!

Хорошо, собака, мои кошки, это плохо.

Функция, которую вы хотите, называется «общей ковариацией», и она поддерживается в C # 4 для интерфейсов, которые, как известно, являются безопасными. IEnumerable<T> не имеет никакого способа записи в последовательность, поэтому он безопасен.

class Animal    
{    
    public virtual void Play(IEnumerable<Animal> animals) { }    
}    
class Cat : Animal    
{    
    public override void Play(IEnumerable<Animal> animals) { }    
}    
class Program    
{    
    static void Main()    
    {    
        Cat cat = new Cat();    
        cat.Play(new List<Cat>());    
    }    
}  

Это будет работать на C # 4, потому что List<Cat> конвертируется в IEnumerable<Cat>, который можно конвертировать в IEnumerable<Animal>. Нельзя использовать Play IEnumerable<Animal>, чтобы добавить собаку к тому, что на самом деле является списком кошек.

10
задан user1406647 25 January 2015 в 11:58
поделиться