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

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

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

 

1、不同类型的参数传递:

①值方式传参:

1)值类型参数传递:

demo(使用struct/结构传递给一个方法):

 

    public 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; }
        }
        private int pop;

        public int Pop
        {
            get { return pop; }
            set { pop = value; }
        }

        public void vote(StructDemo stuDemo)
        {
            stuDemo.Pop++;
        }

        public string voice()
        {
            string message = string.Format("{0} ,{1} ,{2} , {3}",
 this.Name , this.Age , this.Gender , this.Pop);
            return message;
        }
        public string voice(string other)
        {
            string message = string.Format("{0} ,{1} ,{2},bark , {3}" ,
this.Name , this.Age  ,this.Gender ,this.Pop);
            return message;
        }
    }

在btn(按钮)中调用定义的pop方法:

 

        private void button1_Click(object sender, EventArgs e)
        {
            StructDemo str = new StructDemo();
            str.Age = 18;
            str.Name = "小刚";
            str.Gender = StructDemo.Genders.Female;
            str.Pop = 99;
            str.vote(ref str);
            MessageBox.Show(str.voice("use bark"));
        }

 

此时,输出的 pop的值为“99”。

2)引用类型参数传递:

demo1(将刚才定义的struct 修改成class/类):

 

    public class StructDemo//将 struct 修改成 class
    {
        //之前的代码省略...

        public void vote(StructDemo stuDemo)
        {
            stuDemo.Pop++;
        }

        //之后的代码省略...
    }

再次调用定义的pop方法:

 

        private void button1_Click(object sender, EventArgs e)
        {
            //之前的代码省略...
            str.vote(str);
            MessageBox.Show(str.voice("use bark"));
        }

此时,pop会打印值为“100”。

引用方式传参:

1)ref传递引用类型

demo2(将刚才定义的class传入):

 

    public class StructDemo
    {
        //之前的代码省略...
        public void vote(ref StructDemo stuDemo)//ref引用传递
        {
            stuDemo.Pop++;
        }
        //之后的代码省略...
    }

修改成ref修饰后的类StructDemo,调用pop方法:

 

        private void button1_Click(object sender, EventArgs e)
        {
            //之前的代码省略...
            str.vote(ref str);
            MessageBox.Show(str.voice("use bark"));
        }

此时,pop还会打印值为“100”。

2)ref传递值类型

demo3(将第一个demo code中定义的struct传入):

    public struct StructDemo
    {
        //之前的代码省略...
        public void vote(ref StructDemo stuDemo)
        {
            stuDemo.Pop++;
        }
        //之后的代码省略...
    }

修改成ref修饰后的框架 StructDemo,调用pop方法:

        private void button1_Click(object sender, EventArgs e)
        {
            //之前的代码省略...
            str.vote(ref str);
            MessageBox.Show(str.voice("use bark"));
        }

此时,pop打印值为“100”。

2、值类型引用类型的区别:

demo4:

类型 描述
值类型 基本数据类型 int
long
float
char
bool
枚举类型 enum
结构类型 struct
引用类型 System.Object
string
class
接口 interface
数组 int[] , string[]

 

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

 
评论 (0) Trackbacks (0)
发表评论 Trackback
 
No Comment Contributed by Visitors
(Got a sofa?)
  1. 本文目前尚无任何评论.
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 的评论内容.
 
 
  • 正在加载...