if(testClass.answer[i] == testClass.Stuanswer[i]);为什么会有副作用而不会对它计算?

问题描述

boolflag=false;intscore=0;for(inti=0;i<testClass.mun;i++)//类中的mun=10{//问题:表达式产生副作用,将不会对它计算if(testClass.answer[i]==testClass.Stuanswer[i]);{score++;}}label1.Text=string.Format("{0}",score);score=score*100/testClass.mun;score的值始终都是0,测试的时候if里面的两个数组里面都有值,都是string

解决方案

解决方案二:
贴出实际的vs下的截图,不要自己编辑内容。
解决方案三:
有没有副作用取决于answer和Stuanswer的索引器怎么实现的。以及你比较的是引用还是什么。有没有重写equals
解决方案四:
确认两个数组的值都是一一对应的,并且都没有额外的空格这种问题你没不贴数据截图出来你问个啥呢
解决方案五:
观察到if(testClass.answer[i]==testClass.Stuanswer[i]);是以分号结束的所以条件判断并不会影响结果鉴于循环内有score++;,而最终score为0显然是循环体没有被执行可推知testClass.mun小于1,而不是你说的等于10如果testClass.answer[i]或testClass.Stuanswer[i]不存在,将会产生错误。但是你并没有说明如果这是下标不存在而出现异常,按说你也不会不知道如何处理
解决方案六:
多用输出语句去检查值是否和预想一样,循环是否有执行

时间: 2024-10-12 06:40:56

if(testClass.answer[i] == testClass.Stuanswer[i]);为什么会有副作用而不会对它计算?的相关文章

C#中构造函数和析构函数的用法

函数 摘 要:构造函数与析构函数是一个类中看似较为简单的两类函数,但在实际运用过程中总会出现一些意想不到的运行错误.本文将较系统的介绍构造函数与析构函数的原理及在C#中的运用,以及在使用过程中需要注意的若干事项. 关键字:构造函数:析构函数:垃圾回收器:非托管资源:托管资源一.构造函数与析构函数的原理 作为比C更先进的语言,C#提供了更好的机制来增强程序的安全性.C#编译器具有严格的类型安全检查功能,它几乎能找出程序中所有的语法问题,这的确帮了程序员的大忙.但是程序通过了编译检查并不表示错误已经

使用WinDbg获得托管方法的汇编代码

这是一个没有多大价值的小实验,对于大家了解.NET编程等方面几乎没有任何 好处,尽管老赵一直强调"基础",例如扎实的算法和数据结构能力,并且对一 些必要的支持,例如操作系统,计算机体系结构,计算机网络有足够的了解,拥 有"常识",在需要的时候有足够的能力去深入了解便可:但是对于还有一些科 目,例如"编译原理",它虽然可以加强对于一个人对程序的理解,但是我也并 不觉得这是一条"必经之路".了解黑盒内部肯定是有好处的,但是是否值得

C#用delegate实现AOP事务[C# | AOP | delegate]

前言 上一篇 C# 用Attribute实现AOP事务 [C# | AOP | Attribute | ContextAttribute | IContributeObjectSink | IMessageSink ]是实现或者说达到AOP效果的一种方式,其实最早设计在C#中使用AOP来完成事务的方案是准备用delegate的,但无奈不习惯用 这个玩意,也理解不深,后来被Attribute吸引了,这个方案就搁浅了,不过现在我又回来了 : ) 正文 我们先来看一段代码雏 形: class Test

C++中new和delete导致的内存分配问题详解

在嵌入式系统中使用C++的一个常见问题是内存分配,即对new 和 delete 操作符的失控. 具有讽刺意味的是,问题的根源却是C++对内存的管理非常的容易而且安全.具体地说,当一个对象被消除时,它的析构函数能够安全的释放所分配的内存.这当然是个好事情,但是这种使用的简单性使得程序员们过度使用new 和 delete,而不注意在嵌入式C++环境中的因果关系.并且,在嵌入式系统中,由于内存的限制,频繁的动态分配不定大小的内存会引起很大的问题以及堆破碎的风险. 作为忠告,保守的使用内存分配是嵌入式环

面向对象实验报告二

面向对象分析与设计第二次实验报告   一.类的不同类型的方法,属性的可见性   可见/访问性 在同一类中 同一包中 不同包中  同一包子类中  不同包子类中   public  yes  yes  yes  yes  yes  protected   yes  yes  no  yes  yes  package   yes  yes  no  yes  no  private  yes  no  no  no  no public  class Student {     public Str

C++中的内存管理

在C++中也是少不了对内存的管理,在C++中只要有new的地方,在写代码的时候都要想着delete. new分配的时堆内存,在函数结束的时候不会自动释放,如果不delete我分配的堆内存,则会造成内存泄露.所以我们要学会内存管理,不要内存泄露.在C++中的内存管理机制和OC中的还不太一样,在OC中的ARC机制会给程序员的内存管理省不少事,但在C++中没有ARC所以我们要自己管理好自己开辟的内存.Java中也有自己相应的内存管理机制,比如JDBC里的获取的各种资源在finally里进行close等

Java中反射性能测试

Java反射效率到底如何,花了点时间,做了一个简单的测试.供大家参考. 测试背景:  1. 测试简单Bean(int,Integer,String)的set方法 2. loop 1亿次 3. 测试代码尽可能避免对象的创建,复发方法的调用,仅仅测试set方法的耗时 测试结果:  场景  本机测试结果(XP,双核,2G) 服务器测试结果(Linux,XEN虚拟机,8核,5.5G) 方法直接调用 235MS 190MS JDK Method调用 29188MS 4633MS JDK Method调用(

Java中数据输入输出流——DataInputStream和DataOutputStream

一.基本概念 DataOutputStream 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中.然后应用程序可以使用数据输入流将数据读入. DataOutputStream 数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出流写入稍后由数据输入流读取的数据.对于多线程访问不一定是安全的. 线程安全是可选的,它由此类方法的使用者负责.   二.例子 /** * 必须先使用DataOutputStream写入数据,然后使

python中动态加载模块和类方法实现

python中动态加载模块和类方法实现测试代码   文件名: mytest.py 具体代码如下:   注意:模块名,类名,方法名都是变量.   #coding=UTF-8 class TestClass: def sub(self,a,b): return a-b def add(self,a,b): return a+b def echo(self): print "test" def main(): class_name = "TestClass" #类名 mo