`
taowen
  • 浏览: 193354 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在C# 2.0上写另外一种语言来创建对象

阅读更多
创建对象有很多种方式,可以用工厂,可以用容器装配。所以不在乎再多一种啦。。。在C#上写了一种古怪的创建对象的方式,给大家kk。

首先,这是配置代码。意思是说在Lily的宇宙中(每个人都有一个小宇宙,圣斗士。。。),她的Boy是tom,也就是我的眼中只有你。相应的在Lucy的眼中只有joy。
Tom tom = Void.GiveMe<Tom>();
Joy joy = Void.GiveMe<Joy>();
Void.UniverseOf<Lily>().Exist(tom);
Void.UniverseOf<Lucy>().Exist(joy);


然后是创建两个女孩子的代码:
Lily lily = Void.GiveMe<Lily>();
lily.Kiss();
Lucy lucy = Void.GiveMe<Lucy>();
lucy.Kiss();


运行这段代码就可以看到少儿不宜的场景了。。。:
引用

Lily is kissing Tom
Lucy is kissing Joy


产生这样的结果的原因是:
public abstract class Girl : God
{
    public abstract string Name { get; }
    public void Kiss()
    {
        Boy boy = GiveMe<Boy>();
        Console.WriteLine("{0} is kissing {1}", Name, boy.Name);
    }
}


Girl的男朋友从哪里来的?偷来的?抢来的?骗来的?。。。
GiveMe是哪里来的方法?它是上帝的安排啊:

public abstract class God
{
    protected abstract T GiveMe<T>();
}


旁白:其实本来没有神,每个人都是神。。。
上帝怎么实现GiveMe的呢?这就是Void关心的事情了。因为女孩子们是这么创建的:

Lily lily = Void.GiveMe<Lily>();
Lucy lucy = Void.GiveMe<Lucy>();


所以说,这根本就是一个圈。。。因为我要做的其实是完全废弃标准的new和构造函数,采用自己的方式来创建和初始化对象,所以我不把这个叫做某某框架,独立使用也没有价值,它其实是一种语言。这种语言在后面我会用来干一些fancy的事情,但是还没想好怎么弄。。。
分享到:
评论

相关推荐

    C#2.0标准文档(官方语言规范)

    C# 2.0是微软开发的一种面向对象的编程语言,它是.NET框架的重要组成部分,用于构建各种应用程序,包括桌面应用、Web应用以及游戏等。C# 2.0在C# 1.0的基础上进行了多方面的增强和改进,引入了许多新特性,为程序员...

    开发人员必看的C#2.0教程...

    1. **泛型**:C# 2.0引入了泛型,这是一种可以创建类型安全的数据结构的方法,允许在不指定具体数据类型的情况下定义类和方法。泛型提高了代码的重用性和性能,避免了不必要的类型转换。 2. **匿名方法**:匿名方法...

    完全手册:c#2.0程序设计详解电子教程

    C# 2.0是微软推出的一种现代、类型安全的面向对象编程语言,它在C++和Java的基础上进行了创新,提供了更简洁的语法和更强的编程能力。C# 2.0引入了诸如匿名方法、迭代器、泛型、部分类等新特性,增强了代码的可读性...

    C#2.0 语言规范

    15. **匿名类型**:在不指定类型名称的情况下创建对象,通常用于查询表达式的结果。 16. **自动属性**:简化了属性的定义,只需提供get和set访问器的逻辑,其余由编译器生成。 17. **迭代器**:通过yield return...

    c# 2.0语言规范

    匿名方法是C# 2.0中引入的一种可以在声明时不指定方法名而直接在调用点定义的方法。它主要用于事件处理,可以简化事件处理器的定义,避免了大量冗余代码。 ### 迭代器:更高效的循环 迭代器在C# 2.0中被引入,它...

    C#2.0.锐利体验系列课程(4):杂项技术,以及C#语言的未来发展

    Lambda表达式提供了一种更简洁的方式来表示匿名函数,尤其在配合LINQ使用时更为便捷。 5. 枚举和结构体的比较:C# 2.0强化了枚举和结构体的比较,允许直接使用"=="和"!="操作符进行值比较,提高了代码的可读性。 ...

    深入理解C#2.0版

    C#是一种现代、面向对象的编程语言,由微软开发,广泛应用于Windows平台上的各种软件开发。接下来,我们将深入探讨C# 2.0版本中的一些关键特性和概念。 ### 1. 泛型(Generics) 在C# 2.0中引入了泛型的概念,这是...

    C#2.0宝典源文件

    C#是一种由微软公司开发的面向对象的编程语言,它在.NET框架下运行,为开发者提供了高效、安全和强大的编程环境。2.0版本在C# 1.0的基础上做了很多改进和增强,增加了许多新的特性,如匿名方法、迭代器、属性和事件...

    程序天下:C#2.0实例自学手册_200个例子.教程_光盘

    《程序天下:C#2.0实例自学手册_200个例子.教程_光盘》是一本专注于C# 2.0编程语言的实践学习资料。这本书通过200个精心设计的例子,旨在帮助读者从零基础开始,逐步掌握C# 2.0的核心概念和技术,最终达到能够独立...

    C#2.0锐利体验ppt

    C# 2.0是.NET Framework 2.0的一部分,是微软推出的一种面向对象的编程语言,旨在提高开发效率和代码质量。这个“C#2.0锐利体验ppt”很可能是针对C# 2.0新特性和增强功能的一个演示文稿,旨在帮助开发者深入理解和...

    C#1.0 C#1.2 C#2.0 C#3.0 语言规范全集(中文)

    C#是一种由微软公司开发的面向对象的编程语言,它在.NET框架下运行,并且在软件开发领域中占据了重要的地位。本资源包含了C#语言规范的四个重要版本:C#1.0、C#1.2、C#2.0和C#3.0,这些规范详细阐述了C#语言的语法、...

    ASP.Net C#2.0全能数据库组件 (开源含实例源码)

    在ASP.NET中,C#是一种常用的编程语言,用于构建Web应用程序。C# 2.0引入了许多新特性,如匿名方法、迭代器、部分类型等,这些都增强了其作为服务器端编程语言的能力。而数据库组件则通常包含连接数据库、执行SQL...

    C#语言规范2.0版

    在C# 2.0中,泛型可以通过定义类型参数来创建。例如,一个简单的泛型类定义如下: ```csharp public class GenericClass { private T data; public GenericClass(T data) { this.data = data; } public T...

    C#2.0新特性(CHM)

    它们在查询表达式(如LINQ)中特别有用,因为它们允许在不定义新类的情况下快速创建对象。 七、部分类(Partial Classes) 部分类允许将类的定义分散到多个文件中,这在处理大型类或由代码生成工具(如Visual ...

    C#2.0实例自学手册:

    在C#2.0中,匿名方法是函数没有指定名称的一种表达方式,它可以直接嵌入到其他代码中,使得代码更加简洁。例如,你可以使用匿名方法来实现事件处理,或者在需要的地方直接定义一个临时的回调函数。这种特性为编写...

    C# 2.0 winform八哥学语播放软件

    综上所述,这个C# 2.0 WinForm八哥学语播放软件融合了C#语言的特性和WinForm的图形界面设计,利用定时器和音频播放类实现自动播放功能,为八哥的语言训练提供了一种智能化的解决方案。这个项目不仅展示了C#编程的...

    C#语言规范-2.0

    ### C#语言规范2.0知识点详解 #### 泛型 **19.1 泛型** ##### 19.1.1 为什么要使用泛型? 泛型是C# 2.0引入的一个重要特性,它允许开发人员编写类型安全且高度可重用的组件。在没有泛型的情况下,开发人员通常会...

    C#2.0完全自学手册

    C#是由微软公司开发的一种面向对象的编程语言,广泛应用于Windows桌面应用、Web应用以及游戏开发等领域。C# 2.0是其重要的里程碑,引入了许多新特性,极大地提升了开发效率和代码的可读性。 在本书中,你将学习到...

    C#2.0 中文手册

    10. **局部函数**:C# 2.0中引入了局部函数,这是一种在方法内部定义的嵌套函数,有助于代码组织和局部逻辑的封装。 11. **属性(Property)**:属性提供了对类成员的访问控制,结合了字段的安全性和方法的灵活性。...

    C#语言规范2.0(pdf完整版)

    《C#语言规范2.0》是一份详尽的文档,深入探讨了C#编程语言的语法、结构和使用规则,对于任何希望深入了解并熟练掌握C#语言的开发者来说,都是不可或缺的参考资料。以下是根据标题、描述、标签及部分内容提炼出的...

Global site tag (gtag.js) - Google Analytics