pm计算器联盟吧 关注:753贴子:45,553
  • 12回复贴,共1

EL-506A、EL-506P、EL-546D模拟器计划遇到重大挫折

只看楼主收藏回复

因为不了解C#的特性,被狠狠地坑了一把


IP属地:浙江1楼2024-03-28 21:58回复
    我一直以为C#中的类和int之类的变量一样,在执行CassName cls1 = cls2的时候,会直接复制一个cls2的副本给cls1.
    今天我才知道不是这样的直接用等号的话只能是创建了对现有对象的引用副本,对cls2修改的会联动到到cls1上

    这就意味着我现有的代码全都写错了,包括用来测试的。


    IP属地:浙江2楼2024-03-28 22:04
    回复
      之前这些代码到底是怎么运行起来的啊
      现在我要把一部分类改成结构体,另一部分检查是否出现上述这些问题。此外我的数值类都是继承自数值基类的,结构体又不能有继承……要改这些东西,这工作量……有好久都不能写新东西了


      IP属地:浙江3楼2024-03-28 22:06
      回复
        这么多东西要改到猴年马月啊


        IP属地:浙江4楼2024-03-28 22:08
        回复
          我现在得赶紧先去学习一下结构体到底怎么用


          IP属地:浙江5楼2024-03-28 22:13
          回复
            现在我有两个改进思路,
            1:依旧使用类来封装度分秒、分数等等数值,这要检查一下有没有出现之前的引用副本问题,并在以后的代码中避免。但是这样用来运算的话,程序写起来怪怪的,和int这种的差距太大了
            2:用struct表示原来的数值类。这样要大规模修改代码了,因为原来的数值类我还给他们继承自一个基类,现在要该的话那继承过来的共同方法也得想办法分出去,很麻烦。
            struct用在比较小的数据结构里,但是我一直是按照class写的,每个数值类里都有一大堆方法,包括各种乱七八糟的计算。这种情况下再class改struct的话这些方法不知道是不是也得移出去一些(不移出去代码倒是也能跑),但是如果移出去了那之前对他们的引用全都要重写了,烦


            IP属地:浙江6楼2024-03-28 23:25
            收起回复
              发来这吧了呀


              IP属地:广东来自Android客户端8楼2024-03-30 21:29
              收起回复
                学了学结构体和接口,试了一下,发现把由于类和结构体的调用方式差不多,换掉之后只需要重新把原来基类里实现的接口代码放进结构体就行了。所以暂定用思路1了。


                IP属地:浙江9楼2024-04-01 01:01
                回复
                  试试C艹


                  IP属地:湖南来自Android客户端10楼2024-04-07 09:08
                  收起回复