c#,用对象思考:值类型与引用类型(一) - Angel's Blog.

ing
 
 
软件开发,程序设计,前端设计
 
 
首页 > code > c#,用对象思考:值类型与引用类型(一)

c#,用对象思考:值类型与引用类型(一)

 

1、枚举的使用:

1)使用枚举的优点:约束赋值,保证赋值的正确;代码更加清晰好看。
2)枚举的语法:

demo:

public enum 枚举名
{
参数1 , 参数2 , ...
}

3)枚举的具体使用(demo1中,常用的 性别 作为枚举):

demo1:

        public enum Genders
        {
            Male , Female
        }
        private Genders gender;

        public Genders Gender
        {
            get { return gender; }
            set { gender = value; }
        }

 

同理,枚举允许被赋值,枚举的类成员赋值不能是char 类型的,默认为int 类型。

如果想从枚举中的其中一个成员获取枚举值,需要使用Enum.Parse();方法,方法中的第一个参数 typeof 后面紧跟 (枚举类型) ,第二个参数就是要进行转换的字符串,在方法的最外面用枚举类型进行强制转换。

注意:枚举的主体中,不能进行属性、方法的定义。

2、结构的使用:

    访问修饰 struct 结构名称
    {
        //定义的结构
    }

demo2:

    struct StructDemo
    {
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private int age;

        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        public enum Genders
        {
            Male , Female
        }
        private Genders gender;

        public Genders Gender
        {
            get { return gender; }
            set { gender = value; }
        }
        public string voice()
        {
            string message = string.Format("{0} ,{1} ,{2}" ,
this.Name , this.Age , this.Gender);
            return message;
        }
        public string voice(string other)
        {
            string message = string.Format("{0} ,{1} ,{2},bark" ,
this.Name , this.Age  ,this.Gender);
            return message;
        }

结构和类很相似,但是还是有很大的区别:

结构是“值类型”(System.ValueType),类是“引用类型”(System.Object)。

3、值类型(System.ValueType):

值类型包括基本的数据类型,结构类型、枚举类型。

Person1赋给Person2值,在Person2对象的值保存为Person1的值。

当Person2赋值45的时候,在Person2对应的存储区域保存为Age = 45。

4、引用类型(System.Object):

引用类型存储的是对值的引用。

Person1赋给Person2值,Person1与Person2引入同一“心”(对象);

Person2中的值保存Person1的值。

当Person2赋值45的时候,因为它俩引用的同一个对象,它俩的值都会发生变化。

其中,复制的只是对象的引用。

5、装箱与拆箱:

值类型转换为引用类型为装箱,隐式转换;

引用类型转换为值类型为拆箱,需要强制转换。

先装箱,然后才可以进行拆箱,没有装箱是不可以进行拆箱操作。

demo3:

            static void Main(string[] args)
            {
                int i = 12345;
                object j = i;//装箱操作
                i = 34455;//给i赋值 34455
                Console.WriteLine("{0}" , i);
                Console.WriteLine("{0}" , j);
                Console.ReadLine();

                int k = 12345;
                object o = k;
                try
                {
                    int l = (int)o;//拆箱操作
                    Console.WriteLine("取消装箱");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("装箱有误");
                    throw ex;
                }
                Console.ReadLine();
            }

 

或者通过RSS 关注本站的更新 ^ O ^ 。” —  by  转载请注明:来自 Angel's Blog.
本文永久链接: http://www.0ee.com/2010/10/31/c-sharp-valuetype-object-para1.html
 
分类: code标签: ,
 
  • QQ书签
  • Del.icio.us
  • 百度收藏
  • Google
  • 饭否
  • FriendFeed
 

 
评论 (18) Trackbacks (0)
发表评论 Trackback
 
18 Comments Contributed by Visitors
  1.     su 2010年11月3日11:07 11#

    呵呵都不知道这是什么啊 ok

  2.     Angel 2010年11月3日11:59 12#

    @su
    多学学、练练,自然而然就懂了,并不是想象中的那么难。

  3.     chenzhiwei 2010年11月4日13:25 13#

    很久没看过C#了,不喜欢微软件,所以不学C#。

  4.     Angel 2010年11月4日14:22 14#

    @chenzhiwei
    呵呵,各自都有各自的好处,有不同的声音我理解。

  5.     2010年11月5日13:06 15#

    ok 你最近移植了很多主题吗。不错不错。

  6.     Angel 2010年11月5日14:18 16#

    @鸣
    嗯,是的,空间的时候想移植两个娱乐下;本来这东西就没啥技术含量。 ok 欢迎没事来溜达。

  7.     冰棱 2010年11月6日04:57 17#

    哈哈 ok 又换主题啦?不错!

  8.     Angel 2010年11月6日06:06 18#

    @冰棱
    恩,随便移植一个主题,呵呵。 ok

Leave Comments Here...

:) :-D :( :-o 8-O :-? 8) lol :-x :-P oops cry evil twisted wink ? idea :-| arrow mrgreen roll !

(required)

(required)

网址随您("http://"可以省略)

(Ctrl+Enter)

  • 本站不会泄露您的 Email 地址, 敬请放心.
  • 本站已开启缓存, 请不要重复提交评论.
  • 请注意: 带有 《广告(链)、不健康、或者 产品名字》 的评论一律视为spam.
  • 支持常用 HTML 标签调用, 插入 HTML 标签需注意: < == &lt;> == &gt;.
  • 仅当某人针对您的评论做出回应时, 您才会收到由本站发出的邮件通知.
  • 如您希望以相同方式通知某位网友, 请点击  按钮进行回复.
  • 允许在评论中使用如下代码: 
    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> 
    <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> 
    .
  • 鼠标悬浮到评论中的 @someone 区域即可自动显示 someone 的评论内容.
 
 
  • 正在加载...