黑马程序员技术交流社区

标题: 关于值类型与引用类型的区别 [打印本页]

作者: 葛杨杨    时间: 2013-5-21 05:02
标题: 关于值类型与引用类型的区别
本帖最后由 葛杨杨 于 2013-5-23 14:49 编辑

帮忙纠正一下,下面是错误提示和代码:

错误        1        无法将类型“int”隐式转换为“string”        D:\C语言代码\C语言从入门到精通\值类型与引用类型的区别\Program.cs        26        60        值类型与引用类型的区别
错误        2        无法将类型“int”隐式转换为“string”        D:\C语言代码\C语言从入门到精通\值类型与引用类型的区别\Program.cs        27        57        值类型与引用类型的区别
错误        3        无法将类型“string”隐式转换为“int”        D:\C语言代码\C语言从入门到精通\值类型与引用类型的区别\Program.cs        28        21        值类型与引用类型的区别
错误        4        无法将类型“int”隐式转换为“string”        D:\C语言代码\C语言从入门到精通\值类型与引用类型的区别\Program.cs        29        25        值类型与引用类型的区别
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace 值类型与引用类型的区别
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             ReferenceAndValue.Demostration();
  12.             Console.ReadLine();
  13.         }
  14.     }

  15.     public class stamp
  16.     {
  17.         public string Name{ get; set; }
  18.         public string Age{ get; set;}
  19.     }
  20.     public static class ReferenceAndValue
  21.     {
  22.         public static void Demostration()
  23.         {
  24.             stamp Stamp_1 = new stamp{Name="Premiere", Age=25};
  25.             stamp Stamp_2 = new stamp{Name="Again", Age=47};
  26.             int age=Stamp_1.Age;
  27.             Stamp_1.Age=22;
  28.             stamp gurn =Stamp_2;
  29.             Stamp_2.Name="Again Amend";
  30.             Console.WriteLine("Stamp_1's age:{0}", Stamp_1.Age);
  31.             Console.WriteLine("age' value:{0}",age);
  32.             Console.WriteLine("Stamp_2's name: {0}",Stamp_2.Name);
  33.             Console.WriteLine("gurn's name:{0}",gurn.Name);
  34.         }
  35.     }
  36. }
复制代码

作者: 熊薇    时间: 2013-5-21 10:04
在ReferenceAndValue类中,你每次为stamp类的对象的Age属性赋值都赋了int类型的值,而stamp类中定义的Age属性是string类型的,int类型和string型是不能隐式转换的。(年龄一般定义为int类型)
  1. public class stamp

  2.     {
  3.         public string Name{ get; set; }

  4.         public string Age{ get; set;}

  5.     }
复制代码
还有给你个建议,学编程最好从开始就养成好的编程习惯,类名一般用Pascal命名法,对象用camel命名法
作者: 郎吉祥    时间: 2013-5-21 11:05
stamp 定义属性的时候,public int Age{set;get;}
前后要一致,后边用int。属性就要是int
年龄一般是int,
static void Main(string[] args)

      {

           ReferenceAndValue.Demostration();

            Console.ReadLine();

      }
主方法里你为什么后边会跟一个ReadLine?不是ReadKey()吗?
作者: 盘晟    时间: 2013-5-21 12:10
你的问题很简单,你太大意了!
  public class stamp
    {
        public string Name { get; set; }
        public string Age { get; set; }   //上面已经有同学说了,把string改成int就绝对没问题了!
    }
楼主加油!


作者: 黑马—杨磊    时间: 2013-5-21 13:43
public string Age { get; set; } 年龄一般都是int类型的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2