using System;这是第一种方法class user
{
public string name;
public string sex;

public string setsex(string values)
{
if(values=="男"||values=="女")
{
sex=values;
}
else
{
Console.WriteLine ("姓名只能是男或女");
}
return sex;
}

}class property
{
static void Main()
{
user zs=new user ();
zs.name ="张三";
zs.setsex ("牛");

Console.WriteLine ("姓名为:"+zs.name+"   性别:"+zs.sex);
Console.ReadLine ();
}
}
第二种方法using System;class user
{
public string name;
public string sex;

public void setsex(string values)
{
if(values=="男"||values=="女")
{
sex=values;
}
else
{
Console.WriteLine ("姓名只能是男或女");
}

}

}class property
{
static void Main()
{
user zs=new user ();
zs.name ="张三";
zs.setsex ("牛");

Console.WriteLine ("姓名为:"+zs.name+"   性别:"+zs.sex);
Console.ReadLine ();
}
}
以上的两种方法得出结果是一样的,我如何区分应该使用那个好呢,什么情况下使用void,就是说什么情况下定义有返回值和没有返回值??谢谢、、我怎么就是绕不开这个弯,或许有人给我一棒子就好了。最好有个明白的例子最好了

解决方案 »

  1.   

    你这两种方法都是按照无返回值的用法来用,当然感觉不到返回值的作用,假设你的用这句声明 private   string   sex; 
    的话,你就该用到返回值了。
      

  2.   

    using   System;
    //这是第一种方法 class user
    {
        public string name;
        private string sex;    public string setsex(string values)
        {
            if (values == "男" || values == "女")
            {
                sex = values;
            }
            else
            {
                Console.WriteLine("姓名只能是男或女");
            }
            return sex;
        }
    }class property
    {
        static void Main()
        {
            user zs = new user();
            zs.name = "张三";
            string sex = zs.setsex("牛");        Console.WriteLine("姓名为:" + zs.name + "       性别:" + sex);
            Console.ReadLine();
        }
    }
      

  3.   

    假设你要计算1+1的值//计算类
    class oao
        {
            public int result;        public oao()
            {
                this.add2();
            }        public int add()
            {
                return 1 + 1;
            }        public void add2()
            {
                result = 1 + 1;
            }
        }class property
    {
        static void Main()
        {
            oao o =new oao();
            int i=o.result; //不带返回值的,不能i=o.add2();
            int j=o.add();//带返回值的可以直接调用方法
        }
    }
      

  4.   

    第一个方法 有返回值就可以这样
    Console.WriteLine   ("姓名为:"+zs.name+"       性别:"+zs.setsex("牛")); 
      

  5.   

    带不带返回值的作用在于链表操作!
    在MSDN里面你可以看到很多这样子的列子,都带着返回值,ID或者Index。private string m_name;
    public string Name
    {
        get { return m_name; }
        set { m_name = value; }
    }public string GetNameById(string id)
    {
        if (!String.IsNullOrEmpty(id))
            m_name = "Name As Id";    return m_ame;
    }有时候你希望可以通过直接函数就取到名字,而不是调用类里面的成员,例如 string name = GetNameById("001");
    总之,区别仅仅在于你需不需要链表操作,从性能上或者其他方面都没有什么问题。
      

  6.   

    没什么区别,
    当你需要返回值的时候,用需要返回的类型。
    当你不需要返回值的时候,用void