首页 新闻 会员 周边

一个对象属性做一个方法参数 大家看看

-1
[待解决问题]
 public class test
    {
        public static void Main()
        {
            Person p = new Person();
            ConvInt(Person.Age);
            ConvStr(Person.Name);
            ConvGuid(Person.id);
            Console.WriteLine(Person.Age);
            Console.WriteLine(Person.Name);
            Console.WriteLine(Person.id);
            Console.Read();
        }
        public static void ConvGuid(Guid id)
        {
            if (id == Guid.Empty)
            {
                id = Guid.NewGuid();
            }
        }
        public static void ConvInt(int age)
        {
            if (age == 0) { age = 1; }
        }
        public static void ConvStr(string name)
        {
            if (name == null) name = "name";
        }
    }
    public class Person
    {
        public static  Guid id { get; set; }
        public static  int Age { get; set; }
        public static  string Name { get; set; }
    }

想在方法中对对象属性进行修改,就像引用传值
C#
hongdada的主页 hongdada | 菜鸟二级 | 园豆:216
提问于:2013-04-09 11:56
< >
分享
所有回答(5)
0
public static void ConvGuid(Person p)
        {
            if (p.id == Guid.Empty)
            {
              p.id = Guid.NewGuid();
            }
        }
        public static void ConvInt(Person p)
        {
            if (p.age == 0) { p.age = 1; }
        }
        public static void ConvStr(Person p)
        {
            if (p.name == null) p.name = "name";
        }

onvInt(p);
            ConvStr(p);
            ConvGuid(p);

 

chenping2008 | 园豆:9836 (大侠五级) | 2013-04-09 13:10
0

两个方案:

1、单搞一个工具类,进行转换

Person.Age = EConvert.ToInt(Person.Age);
Person.Name = EConvert.ToString(Person.Name);

2、用ref数实现,使参数按引用传递

 

 

青羽 | 园豆:207 (菜鸟二级) | 2013-04-09 13:19
0

这个~!!!引用类型传参么.?

应该把对象传进去,然后再修改,就可以直接更新对象的属性值了.

只会造轮子 | 园豆:2274 (老鸟四级) | 2013-04-09 13:54
0

加 ref 即可.

public static void ConvGuid( ref Guid id)

Dean@cnbolg | 园豆:210 (菜鸟二级) | 2013-04-09 16:12
0

 第一种:C#中有ref关键字,在需要保存修改状态的参数前面用ref修饰。

 第二种:还有另外一种方式,将方法ConvXXX方法的参数改成对象的引用,不过这样就要将这些方法提取出来放到另外一个类中,并且不能设置为static修饰。

第三种方式:你可以在test类下面,写一个用static修饰Person类型的成员变量,并且用静态代码初始化该成员变量,将ConvXXX方法的参数设置为Person类型对象引用。

零下三度 | 园豆:221 (菜鸟二级) | 2013-04-09 17:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册