读书人

c#照着书上的如何出错了?

发布时间: 2013-09-24 11:29:02 作者: rapoo

c#照着书上的怎么出错了???
c#照着书上的如何出错了?
[解决办法]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace test
{
class MessageHandler
{
private static MethodInfo[] mi = typeof(MessageHandler).GetMethods();
private ComplexNumber c1 = new ComplexNumber();
private ComplexNumber c2 = new ComplexNumber();
public enum CplNum { real, image };
public struct Digit
{
byte value;
public Digit(byte value)
{
if (value < 0
[解决办法]
value > 9)
throw new ArgumentException();
this.value = value;
}
public static implicit operator byte(Digit d)
{
return d.value;
}
public static explicit operator Digit(byte b)
{


return new Digit(b);
}
}
class ComplexNumber
{
private double real;
private double image;
public ComplexNumber() { }
public ComplexNumber(double real, double image)
{
this.real = real;
this.image = image;
}
public static ComplexNumber operator +(ComplexNumber op1, ComplexNumber op2)
{
return new ComplexNumber(op1[CplNum.real] + op2[CplNum.real], op1[CplNum.image] + op2[CplNum.image]);
}
public static ComplexNumber operator ++(ComplexNumber op)
{
double real = op[CplNum.real] + 1.0;
double image = op[CplNum.image] + 1.0;
return new ComplexNumber(real, image);
}
public static bool operator true(ComplexNumber cn)
{
return 0 != cn.image && 0 == cn.real;


}
public static bool operator false(ComplexNumber cn)
{
return 0 != cn.real;
}
public double this[CplNum index]
{
get
{

if ((index < CplNum.real)
[解决办法]
(index > CplNum.image))
{
throw new IndexOutOfRangeException("cannot get element" + index);
}
if (CplNum.real == index)
{
return real;
}
else
{
return image;
}
}
set


{
if ((index < CplNum.real)
[解决办法]
(index > CplNum.image))
{
throw new IndexOutOfRangeException("cannot set element" + index);
}
if (CplNum.real == index)
{
real = value;
}
else
{
image = value;
}
}
}
}

public void Message()
{
Console.Write("In message():");
Console.WriteLine("hello world:");
}
public void Message(char ch)
{
Console.Write("In message(char):");
Console.WriteLine(ch);


}
public void Message(string msg)
{
Console.Write("In message(System.String):");
Console.WriteLine(msg);
}
public void Message(string msg, int val)
{
Console.Write("In message(System.String,Int32[]):");
Console.WriteLine("val={0}", val);
}
public void Message(string msg, params int[] args)
{
Console.Write("In message(System.string,Int32[]):");
Console.Write(msg);
for (int ix = 0; ix < args.Length; ix++)
{
Console.Write("{0}", args[ix].ToString());
}
Console.WriteLine();
}
public void Message(string msg, params double[] args)
{
Console.Write("In message(System.string,Int32[]):");
Console.Write(msg);
for (int ix = 0; ix < args.Length; ix++)
{
Console.Write("{0:f1}", args[ix]);
}
Console.WriteLine();
}


public void Message(string msg, params object[] args)
{
Console.Write("In message(System.string,System.object[]):");
Console.Write(msg);
if (args.Length != 0)
{
foreach (object o in args)
{
Console.Write("{0}", o.ToString());
}
}
Console.WriteLine();
}
public static void Main(string[] args)
{
Console.Title = "Lab #5-Polymorphism by 88250";
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.WriteLine("Enumerate all Methods named Message:");
foreach (MethodInfo m in mi)
{
if ("Message" == m.Name)
{
Console.WriteLine(" Method:{0}", m.GetBaseDefinition());
}
}
MessageHandler mh = new MessageHandler();
mh.Message();
mh.Message("V");


mh.Message("I'M daniel");
double fVal1 = 10.0, fVal2 = 0.0;
mh.Message("Chen", 10, fVal1, fVal2, 1024.0);
mh.Message("Double fib:", 1.0, 1.0, 2.0, 3.0, 5.0, 8.0, 13.0, 21.0, 34.0);
int iVal1 = 10;
mh.Message("numble", iVal1);
mh.Message("88250", 10, fVal1, fVal2, 1024);
mh.Message("fib:", 1, 1, 2, 3, 5, 8, 13, 21, 34, 55);
mh.Message("DChen", 88250, "Chen", 884588990, "DC");
Console.ForegroundColor = ConsoleColor.Blue;
mh.c1[CplNum.real] = 1.0;
mh.c1[CplNum.image] = 2.0;
mh.c2[CplNum.real] = -1.0;
mh.c2[CplNum.image] = -3.0;
Console.WriteLine("c1={0}+{1}i", mh.c1[CplNum.real], mh.c1[CplNum.image]);
Console.WriteLine("c2={0}+{1}i", mh.c2[CplNum.real], mh.c2[CplNum.image]);
ComplexNumber result = new ComplexNumber((mh.c1 + mh.c2)[CplNum.real], (mh.c1 + mh.c2)[CplNum.image]);
if (result)
{
Console.WriteLine("c1+c2={0}i", result[CplNum.image]);
Console.WriteLine("the result number is a pure image number!!");
}
else


{
Console.WriteLine("c1+c2={0}+{1}i", result[CplNum.image], result[CplNum.real]);
}
ComplexNumber cn1 = result++;
Console.WriteLine("c1+c2={0}+{1}i", cn1[CplNum.image], cn1[CplNum.real]);
ComplexNumber cn2 = ++result;
Console.WriteLine("c1+c2={0}+{1}i", cn2[CplNum.image], cn2[CplNum.real]);
Console.Read();
}
}
}

读书人网 >C#

热点推荐