asp.net get set用法

来源:互联网 发布:i need a doctor 知乎 编辑:程序博客网 时间:2024/06/03 12:42

asp.net get set用法

属性的定义和使用 属性由两个部分组成:属性头和存储器。存储器分为get访问器和set访问器。声明属性的一般形式为: 修饰符 类型 属性名

在早期学习c#的过程中,经常遇到这样的语句:
public string StudentName
{
           get{return stuName;}
           set{stuName=value;}
}
       
当时也不是很明白为什么要这样?学深了c#后,又没法对其做一个总结。今天看了《Visual c#.net程序设计教程》这本书,总结得不错,做下笔记:

       
在许多面向对象程序设计语言中,属性(property)是指对象的特征和状态,具体地说就是指对象的数据成员。程序员可以指定数据成员能否被外界直接访问,如果数据成员被指定为public的,外界就可以用“对象名.公有数据成员名”访问该成员。c#是完全面向对象的语言,c#倡导一种新途径,对数据成员能够更好地封装和保护,同时又向外界提供更有效的访问形式。c#中用来达到这个目标的就是“属性”,而那些数据成员,在c#中称为“字段”或“域”。

属性的定义和使用
属性由两个部分组成:属性头和存储器。存储器分为get访问器和set访问器。声明属性的一般形式为:
修饰符  类型  属性名
{
     get   //get
存取程序
     {...}
     set   //set
存取程序
     {...}
}
       
属性的修饰符可以是任何访问控制符,还可以被定义为静态。getset是一种特定的方法,get用来从对象中读取数据,而set用来向字段写入数据,将外界的数据写入字段时,c#使用value表示输入的数据,value可以说是一个准关键字,例如:
set{aField=value;}
以下是一个简单的例子,演示了属性的基本形式和用法:
using System;
using System.Collections.Generic;
using System.Text; 
namespace 
属性的用法
{
    public class Student
    {
        private string stuName = "
阿会楠";
        public string studentName
        {
            get { return stuName; }
            set { stuName = value; }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            Console.Write(stu.studentName);
            Console.ReadKey();
        }
    }
}

       
上面代码中定义了一个属性studentName,它包含get访问器和set访问器。属性studentName封装了类Student中的字段stuName,字段如果没有加访问控制符,被默认为private,外界不能直接访问它,现在外界可以通过studentName属性自由地存取stuName字段了。

       
属性的getset都是可执行的程序语句组合,具有行为的特点;而使用具有get访问器和set访问器的属性时候就像使用字段一样,即可以作为左值接受数据,又可以作为右值输出数据,系统正是按照属性出现在语句中的位置,自动地选择是调用get还是调用set

 

属性的读写控制
       属性中的get和set可以只用一个,如果只有get而没有set,那么这个属性只可读出,不可写入;如果只有set而没有get,那么这个属性是只写入,不可读出。


在属性中完成更多功能

       既然get和set是程序,那当然可以做更多的事情。一个合理的分工是:设计字段是为了便于内部方法使用,而尽量与外界隔绝;设计属性考虑的是方便外界的使用,但是不让外界知道的数据一律不给。


最后给一个例子:

复制代码 代码如下:


using System; 
using System.Collections.Generic; 
using System.Text; 

namespace 
属性的用法 

    public class Student 
    { 
        private string stuCollege = "jyu";//学校名称不可修改
 
        private string stuName = "阿会楠
"; 
        private int stuAge = 22; 
        public string studentName 
        { 
            get { return stuName; } 
            set { stuName = value; } 
        } 
        public int studentAge 
        { 
            get { return stuAge; } 
            set { stuAge = value; } 
        } 
        public string studentCollege 
        { 
            get { return stuCollege; } 
        } 
        public string studentInfo 
        { 
            get { return "学校:" + stuCollege + "名字:" + stuName + "岁数:
" + stuAge;} 
        } 
    } 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            Student stu = new Student(); 
            Console.Write(stu.studentCollege + "\n"); 
            stu.studentAge = 25; 
            Console.Write(stu.studentInfo); 
            Console.ReadKey(); 
        } 
    } 


输出结果是:

 

 

asp.net 类、属性、以及getset的解释

有几个很基础的问题~希望高手能帮我解答下谢谢一、怎么辨别类和属性 public class car CLASS就是类吗? public string Car这个是属性吗?STRING不是变量吗? 二、这段话怎么理解。 public string Color { get{return:color}; set{color=value}; ...有几个很基础的问题~希望高手能帮我解答下谢谢
一、怎么辨别类和属性
public class car CLASS就是类吗?
public string Car这个是属性吗?STRING不是变量吗?

二、这段话怎么理解。
public string Color
{
get{return:color};
set{color=value};
}

public string Color
{
get{return:color};
set{color=value};
}

color=value
不是赋值吗?那我不能直接public string Color=value

最佳答案

public classcar//这个是类。
{
public string Car//
这个是字段。
private string color;//这个也是字段。

public string Color//这个才是属性。
{
get{return color};
set{color=value};
}
}

public string Color=value
这样不可以
value在set当中才有。。。

要给color赋值的方法是。
先实例化类:
carobjCar=new car();
然后通过类的对象进行赋值:
objCar.Color="Red";

使用属性的作用是:
public string Car ;
这种形式,我们没法控制:
也就是说objCar.Car="Benz";
string Car=objCar.Car;
都可以。

但是使用属性,
我们可以把刚才的属性做下修改:
public string Color
{
get
{
return color;
}
}

这样我们在做,objCar.Color="Red";就会报错了,,,因为现在的Color是一个只读属性了。。。也就是说只可以string CarColor=objCar.Color;

 

 

public string SampleString;对于这样一个字段来说,它是公开的,类的外部也可以直接对它进行操作。

private string _sampleString;而这样,它就是一个对象内部私有的字段,类的外部无法访问到它。

private string _sampleString; public string SampleString {      get {          return _sampleString;      }      set {          _sampleString = value;      } }这一段代码,则是典型的属性了,通过 get set访问器,来操控一个内部的私有字段。同时,get set内部可以添加更多的控制代码,这就是为什么要用属性而不用公共字段的原因。

最常见和简单的形式就是让他变成一个对外部来说只读字段 (没有 set访问器) public string SampleString {      get {          return _sampleString;      } }

get set访问器在编译后,将变成两个方法,因此你可以看成就是这两个方法的简单写法 (本质上就是) public string get_SampleString() {      return this._sampleString; } public void set_SampleString(string value) {      this._sampleString = value; }

 

 

0 0
原创粉丝点击