在C,C++中可以用指针或者引用去传递对象,但是在C#编程中,常用的page_load(object sender,EventArgs e)直接传一个对象过来,消耗太大了吧,像aspx页和aspx.cs的这种继承关系。 如果把aspx页的对象传递给aspx.cs的父类,但我们又从来不使用这个sender,这不是直接的资源浪费!

解决方案 »

  1.   

    引用 引用 c#中 不是struct的地方传递的都是引用 这有什么大的
    你以为还是c++啊
      

  2.   

    asp.net的事件驱动模型+拖拉式开发方式, 很便利, 降低了门槛, 提高了开发速度.
    同时也增加了低效代码出现的可能.
      

  3.   

    object sender传过来的是一个地址,不是对象的全部属性。
    你找找值传递和引用传递的资料
      

  4.   


    从 object sender 的声明上看, 明明是声明了一个object的变量,怎么会是地址呢?
      

  5.   


    那我声明一个void function(object c)的函数, 传递的都是指针?那什么时候才是传值呢?
      

  6.   

    传递的是引用,没听说搞asp.net的家伙(们)精神不正常。
      

  7.   


    传值是int,float这些基础类型,还有struct
      

  8.   

    如果单纯比运行效率,肯定比不上c++,但如果是开发效率,那c/c++就差远了。
      

  9.   

    我没正经学过 C# ,我只是知道C++中传递的是copy传递,就是void function(object c),那么如果按照function(d)去调用的时候,会发生object c = d的浅拷贝,也就是对象数据成员的复制。但不发生资源拷贝。我之所以怀疑C#是copy传递,是因为vb中有
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    便是按值传递的,所以我怀疑C#也是按值传递的。
      

  10.   

    同时如果变成ByRef,就是发生下面的编译错误,所以按照这个事情驱动的原形,我怀疑C#也根本是按值传递,也就是进行对象的复制。编译器错误信息: BC31029: 方法“Protected Sub Page_Load(ByRef sender As Object, e As System.EventArgs)”无法处理事件“Public Event Load(sender As Object, e As System.EventArgs)”,因为它们不具有相同的签名。
      

  11.   

    asp.net的页面周期有很多事件。而且都是有顺序的。假设是按值传递。那page_load 中的 sender和page_prerender的sender是一样了。呵呵。那页面一辈子都不会变化了。因为 void.
      

  12.   


    系统事件驱动,.net就是传递指针。你再 byref 当然出错。这个出错不能推导出按值传递吧。
      

  13.   

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load vb语法不懂啊。嗯,ByVal确实让人迷惑。再去查查资料。
      

  14.   

    对大多数人来说,先不要言不称high performance,首先要让你的软件或者程序能够运行,其次想怎样优化代码,让代码简明清晰,最后再看看你的代码结构是否组织合理,这些研究好了,再研究性能也不迟.