程序不包含适合于入口点的静态Main方法怎么办,怎么修改

程序不包含适合于入口点的静态Main方法怎么办,怎么修改,第1张

这是一个封装类,是被用来调用的。不能直接运行。

如果想直接运行的话,在类中加入Main方法。

using System

namespace ClassLib

{

public class ClassPerson

{

public ClassPerson ():this(null)

{

}

public ClassPerson (string strname)

{

name=strname

}

private string name=null

private string sex

private int age

public string Name

{

set{ name=value}

get{ return name}

}

public string Sex

{

set{sex=value }

get{return sex}

}

public int Age

{

set{age=value}

get{return age}

}

public void SayHello()

{

if(name==null)

{

System.Console.WriteLine ("Hello World")

}

else

{

System.Console.WriteLine ("Hello,"+name)

}

}

//添加程序入口Main方法

public static void Main(string[] args)

{

ClassPerson cp = new ClassPerson("name")//实例化ClassPerson类时,可带参,

//也可不带参。带参时,控制台输出“Hello,name”,不带参则输出“Hello World”。

cp.SayHello()

}

}

}

public class ex4 {

public static void main(String args[]) {

// No.1 添加语句构造一个CFushu类的对象c1表示复数3+6i,构造一个CFushu类的对象c2表示复数7+6i,

CFushu c1=new CFushu(3,6)

CFushu c2=new CFushu(7,6)

// No.2 添加语句构造CFushu类对象c3复制为c1和c2的和(调用CFushu类中的add方法求c1与c2的和)

CFushu c3=c1.add(c2)

// No.3 添加语句显示输出c3的实部和虚部值,与实际运算的c1与c2和值比较是否吻合

System.out.println("c3的实部="+c3.m_Real+" c3虚部 ="+c3.m_Image )

// No.4 添加语句显示输出c1和c2的实部和虚部,观察其变化,分析原因

System.out.println("c1的实部="+c1.m_Real+" c1虚部 ="+c1.m_Image )

System.out.println("c2的实部="+c2.m_Real+" c2虚部 ="+c2.m_Image )

}

}

class CFushu// 描述复数

{

double m_Real// 表示复数的实部

double m_Image// 表示复数的虚部

public CFushu(double real, double image)// 定义构造函数

{

m_Real = real

m_Image = image

}

CFushu add(CFushu fushu)// 实现当前复数和参数复数fushu的加法

{

fushu.m_Real += m_Real// 和值结果保存在fushu对象中

fushu.m_Image += m_Image

return this

}

}

结果:

c3的实部=3.0 c3虚部 =6.0

c1的实部=3.0 c1虚 =6.0

c2的实部=10.0 c2虚 =12.0

为什么明明c3是c1和c2的和,应该是10,12,但c3却和c1相等,而c2变成了c1和自身的和,分析:

c3 = c1.add(c2)

关键在这里是c1调用的add(c2)方法,而传进去的是c2的引用。在来看

这个方法的实现

CFushu add(CFushu fushu)// 实现当前复数和参数复数fushu的加法

{

fushu.m_Real += m_Real// 和值结果保存在fushu对象中

fushu.m_Image += m_Image

return this

}

fushu.m_Real += m_Real//fushu.m_Real 是c2的属性,+= m_Real 是c1的属性

这样就将c1的实部和c2的实部相加,得到的值再付给c2的实部。由于传的是c2的引用,因此通过c2的引用改变了c2实部的值,而c1的实部没有改变,仍是3。就如同注释中说的“和值结果保存在fushu对象中”这个fushu对象就是c2对象。虚部同理。

return时 ,返回的是this, 因为是c1.add()也就是说,这个this是c1对象,而c1对象没有任何变化,因此返回给c3的是c1对象。

所以出现上述情况。

如果将add()改为 c3 = c2.add(c1)

结果为:

c3的实部=3.0 c3虚部 =6.0

c1的实部=10.0 c1虚 =12.0

c2的实部=3.0 c2虚 =6.0

道理同上。

如果楼主想达到的目的是c1,c2本身值不变,c3为他们的和,只需将add()改为

CFushu add(CFushu fushu)// 实现当前复数和参数复数fushu的加法

{

return new CFushu(fushu.m_Real+m_Real,fushu.m_Image+m_Image)

}

这样没有改变传进去的对象值,返回出的新对像的值是c1和c2的和。

累!

进入程序后,就开始找main函数,可能是int main也可能是void main等。 然后可能遇到判断、循环、分支结构,然后按各自的语法分别执行,还可能遇到被调函数,到了那里就再去执行被调函数,执行完被调函数就再回来。 直到main函数全部执行完毕


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11816710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存