您的位置:首页 > 其它

集合初始化器

2010-11-21 00:28 190 查看
呼呼 终于看到我真正想看的东西了 前面的那些知识是顺带巩固与再理一遍的了 写了几个项目后再回来看看 感觉的确很强烈 很多之前没有重视或者遗忘的东西被我注意到了 再想想 哇 原来可以这么写 我以前要是这么写的话 能就省心好多了哇 之所以对这几天看的东西特别有感觉 是因为我已经学过LinQ 并结合LinQ to Entity写了两个管理系统 可是那时我连泛型都不知道是什么 汗 还有迭代器 会用
却不知道是什么 我个汗啊 现在想想还真是寒啊 就这么差的基础 还去学LinQ 居然还用它给写出东西来了 不过那时的确是碰了很多壁 还被大神给好好鄙视了番 直接导致我立马跑去拍下了这本C#入门经典第四版 现在看看 收获很大.. 希望通过这次返回来打C#基础 我能学得更扎实 我相信它对我的影响是非常大的

代码米注释....都是动物 函数名都是浅显易懂的英文 加注释半天没下得了手..............

Code:

public abstract class Animal

{
protected string name;


public string Name

{
get

{
return name;

}
set

{
name = value;
}
}

public Animal()

{
name = "The animal with no name";

}

public Animal(string newName)

{
name = newName;
}

public void Feed()

{
Console.WriteLine("{0} has been fed.", name);

}

public abstract void MakeANoise();

}



public class Chicken : Animal

{
public Chicken()

{

}
public void LayEgg()

{
Console.WriteLine("{0} has laid an egg.", name);

}

public Chicken(string newName)

: base(newName)

{

}

public override void MakeANoise()

{
Console.WriteLine("{0} says 'cluck!'", name);

}
}



public class Cow : Animal

{
public Cow()

{
}
public void Milk()

{
Console.WriteLine("{0} has been milked.", name);

}

public Cow(string newName)

: base(newName)

{

}

public override void MakeANoise()

{
Console.WriteLine("{0} says 'moo!'", name);

}
}



public class SuperCow : Cow

{
public SuperCow()

{
}

public void Fly()

{
Console.WriteLine("{0} is flying!", name);

}

public SuperCow(string newName)

: base(newName)

{
}

public override void MakeANoise()

{
Console.WriteLine("{0} says 'here I come to save the day!'", name);

}
}



public class Farm<T> :IEnumerable<T> where T : Animal

{
private List<T> animals = new List<T>();


public void Add(T animal)

{
animals.Add(animal);
}

public List<T> Animals

{
get

{
return animals;

}
}

public IEnumerator<T> GetEnumerator()

{
return animals.GetEnumerator();

}

IEnumerator IEnumerable.GetEnumerator()
{
return animals.GetEnumerator();

}

public void MakeNoises()

{
foreach (T animal in animals)

{
animal.MakeANoise();
}
}

public void FeedTheAnimals()

{
foreach (T animal in animals)

{
animal.Feed();
}
}

public Farm<Cow> GetCows()

{
Farm<Cow> cowFarm = new Farm<Cow>();

foreach (T animal in animals)

{
if (animal is Cow)

{
cowFarm.Animals.Add(animal as Cow);

}
}
return cowFarm;

}
}



class Program

{
static void Main(string[] args)

{
Farm<Animal> farm = new Farm<Animal>

{
new Cow{Name="Cow"},

new Chicken{Name="Chicken"},

new Chicken(),

new SuperCow{Name="Chesney"}

};
farm.MakeNoises();
Console.ReadKey();
}
}

唉 实话说 我对这段代码也只是做到勉强理解的程度 让我自己写 我是绝对写不出这么漂亮的代码的 悲叹..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: