精华内容
下载资源
问答
  • 浅谈C# 字段和属性

    2020-12-17 05:10:39
    对应到字段和属性中,通常字段修饰为private,属性修饰为public。 二、字段的使用 1.关于字段 a.字段又称为:“成员变量”,一般在类的内部做数据交互使用。 b.字段命名规范:camel命名法(首单词字母小写)。 2....
  • c#字段和属性的区别

    千次阅读 2018-11-26 17:00:29
    字段和属性都有访问修饰符 作用: 1. 设定访问权限 2. 限制类中的成员(属性、方法等)可访问的范围 访问范围通常有,类的内部、类的外部。 常用类型:private(私有的,仅类的内部使用);public(公有的,没有访问...

    本文来源 https://www.cnblogs.com/green-jcx/p/9023141.html


    -书写上的区别

    1. 访问修饰符

    字段和属性都有访问修饰符

    作用:
    1. 设定访问权限
    2. 限制类中的成员(属性、方法等)可访问的范围
    访问范围通常有,类的内部、类的外部。

    常用类型:private(私有的,仅类的内部使用);public(公有的,没有访问限制)

    Tips:类的成员在定义时,没有写出访问修饰符,则默认是private。
    对应到字段和属性中,通常字段修饰为private属性修饰为public

    2.字段

    a.字段又称为:“成员变量”,一般在类的内部做数据交互使用。
    b.字段命名规范:camel命名法(首单词字母小写)**。

     -字段主要是为类的内部做数据交互使用,字段一般是private。
     -字段可读可写。
     -当字段需要为外部提供数据的时候,请将字段封装为属性,而不是使用公有字段(public修饰符),这是面向对象思想所提倡的。

    3.属性

    a:在面向对象设计中主要使用属性描述对象的静态特征。
    b:Pascal命名法(首字母大写),数据类型要和对应的字段要一致。

    理解:属性本质是一个方法,其实就是外界访问私有字段的入口,属性本身不保存任何数据,
    在对属性赋值和读取的时候其实就是操作的对应私有字段


    -处理的是studentName字段

    属性的作用

    A.避免出现非法数据


    通过属性的set方法加入判断逻辑,从而排除这种非法数据。
    (set中加入了if条件判断
    )

    B.限定属性只读或者只写
    例如有些属性为了保护数据,根据需要,屏蔽set或get方法达到只读和只写。
    在这里插入图片描述
    -无set方法

    C.没有对应私有字段的属性,例如根据生日属性获取到年龄。
    在这里插入图片描述
    -没有表达年龄的字段,只能通过Age属性计算年龄
    Convert.ToDateTime() 转换为日期型(datetime)

    a.属性一般是向外提供数据,主要用来描述对象的静态特征,所以,属性一般是public。

    b.属性具备get和set方法,可以在方法里加入逻辑处理数据,灵活拓展使用。

    展开全文
  • c#字段和属性的区别与介绍

    千次阅读 2018-07-02 20:12:35
    字段:访问权限 值类型 字段名 例如:private int number;属性:public int Number{ get{ return this.number;... }}字段和属性的区别。例子说明: 如果我们有一个公有字段 如成绩的分数(public int...

    字段:

    访问权限   值类型  字段名 

    例如:private int number;

    属性:

    public int Number{

        get{

             return this.number;

        }

        set{

            this.number = value;

        }

    }

    字段和属性的区别。

    例子说明:

                如果我们有一个公有字段 如成绩的分数(public int score; ),我们可以在类的外部,访问,修改字段。但是假如我们给分数 赋值,score = 10000;编译不会报错,但是不符合常理。

                这里我们就需要使用属性来限制 对字段提供一些安全保护  。

    private  int  score;
     
             public  int  Score
             {
                 get  { return  score; }
                 set  {
                     if  (value >= 0 && value <= 100)
                     {
                         score = value;
                     }
                     else
                     {
                         throw  new  Exception( "score value has error." );
                     }
                 }

    总结:属性里的get,set访问器可以对字段提供一些安全保护了。属性对外:暴露数据,数据可以是存储在字段里的,也可以是动态计算出来的。对内:保护字段不受“非法值”污染。一般情况下,它们都用于表示实体(对象或类型)的状态。属性大多数情况下是字段的包装器(wrapper)。建议:永远使用属性(而不是字段)来暴露数据,即字段永远是private或protected的


    展开全文
  • 个人在多次编程当中自我提炼出C#中的字段属性与方法的区别
  • C# 字段和属性

    千次阅读 2018-03-22 14:09:59
    最大的疑惑就是:有了字段,为什么还要有属性呢?如果在一个类中有一个公有字段,那么在这个类的外部我们可以自由无阻的使用这个字段,但是如果给这个字段赋了一个很“离谱”的值,那这对程序可能会造成很大的影响...

    最大的疑惑就是:有了字段,为什么还要有属性呢?

    如果在一个类中有一个公有字段,那么在这个类的外部我们可以自由无阻的使用这个字段,但是如果给这个字段赋了一个很“离谱”的值,那这对程序可能会造成很大的影响

    比如:

    Class Student

    {

       public int Age;

    }

    在这个类外我们写:

    Student stu =new Student();

    stu.Age = 1000;

    众所周知,人目前是不可能活到1000岁的,但是这样赋值编译器又不会报错(假设外部没有限制Age取值的逻辑),但是我们知道这个程序运行后的结果是有错误的

    所以我们有了“属性”这个东西,代码可以这样写:

    class  Student
         {
             private  int  age;
     
             public  int  Age
             {
                 get  { return  age; }
                 set  {
                     if  (value >= 0 && value <= 100)
                     {
                         age = value;
                     }
                     else
                     {
                         throw  new  Exception( "Age value has error." );
                     }
                 }
                }

     这里的value以为上下文关键字了

    属性里的get,set访问器可以对字段提供一些安全保护了(个人理解为使用一些逻辑来保护字段的值为“说的过去的”)

    ---------------------------------------------------------------------------------------------------------------

    这是微软官方C#编程指南里的对属性的定义:

    “属性是这样的成员:它提供灵活的机制来读取、编写或计算某个私有字段的值。 可以像使用公共数据成员一样使用属性,但实际上它们是称作“访问器”的特殊方法。 这使得可以轻松访问数据,此外还有助于提高方法的安全性和灵活性。”

    ---------------------------------------------------------------------------------------------------------------

    一段总结:

    //属性对外:暴露数据,数据可以是存储在字段里的,也可以是动态计算出来的

    //对内:保护字段不受“非法值”污染

    //一般情况下,它们都用于表示实体(对象或类型)的状态

    //属性大多数情况下是字段的包装器(wrapper)

    //建议:永远使用属性(而不是字段)来暴露数据,即字段永远是private或protected的



    展开全文
  • c# 字段和属性

    万次阅读 2011-10-03 20:10:54
    一、字段(field)  可以在声明字段的同时赋给它一个初始值。... 假如将字段声明为public,则在类的外部都可以对该字段进行访问更改,违背了类的封装特性。如果声明为private,则这种形式的封装通常又过于彻

    一、字段(field)

        可以在声明字段的同时赋给它一个初始值。

    二、属性(property)

    1、引入

           假如将字段声明为public,则在类的外部都可以对该字段进行访问和更改,违背了类的封装特性。如果声明为private,则这种形式的封装通常又过于彻底。例如,你可能希望字段从外部只读,但从内部可以更改,但需要验证对数据进行的更改。

           以前,程序语言为了实现这些要求,采取的办法是将字段标记为私有,然后提供取值和赋值的方法来访问和修改数据。遗憾的是,这样做会影响类的可编程性。无法再用赋值运算符来设置类中的数据。另外,要想访问数据,只能调用方法来进行。

           考虑到经常会用到这种设计模式,c#的设计者决定为它提供显示的语法支持即属性。

    2、构成

         属性的声明看起来和字段声明一样,但跟随属性名之后的是一对大括号。在大括号中,要添加具体的属性实现代码。两个可选的部分构成了一个属性的实现。其中,get标志的属性的取值方法部分,set标志着属性的赋值方法部分,它允许你调用字段赋值语法。

    3、自动实现的属性

          它允许在声明一个属性时,不实际的实现任何取值方法或赋值方法,也不声明任何支持字段。

          例如:

      class Employee

    {     public string FisrtName   //手动实现的属性

          { 

             get   { return _FirstName; }

             set  { _FirstName=value}

          }

         private string _FirstName;  //属性FirstName的支持字段

     public string LastName  { get;  set;} // 自动实现的属性

    4、属性作为虚字段使用 即该属性没有支持字段

         在某些情况下,你甚至根本不需要一个支持字段。你可以让属性的取值方法返回一个计算好的值,而让赋值方法解析值,并把它持久存储到其他一些成员字段中。

    例子:

    class Employee

    {     public string FisrtName   

          { 

             get   { return _FirstName; }

             set  { _FirstName=value}

          }

         private string _FirstName; 

         public string LastName   

          { 

             get   { return _LastName ; }

             set  { _LastName =value}

          }

         private string _LastName ; 

         public string Name//属性作为虚字段使用

        {

                 get   {  returen   FirstName+ " " +LastName;}

                 set

                    {    string[]   names=value.Split( new char[] { '    '} );//  public String[] Split( params char[]  separator) 

                                                                                                               //separator :分隔此实例中子字符串的 Unicode 字符数组、不包含分隔符的空数组或 Nothing
                                                                             // 返回值:一个数组,其元素包含此实例中的子字符串,这些子字符串由 separator 中的一个或多个字符分隔。

     

                          if(names.Length==2)

                                     {  FirstName=names[0];   LastName=names[1];}

                          else   {  throw new System.ArgumentException (string.Format("assigned value '{0}'is invalid",value ) ) }

                      }

        }

    }                

    5、只读和只写属性

        通过移除某个属性的取值方法或赋值方法部分,可以改变属性的可访问型。只有赋值方法的属性为只写属性,这种情况很罕见。只提供取值方法的属性为只读属性,任何赋值企图都会造成编译错误。

    6、为属性的取值和赋值方法指定访问修饰符

          (1)若不为属性的赋值和取值方法指定访问修饰符,则他们的访问修饰符默认为属性的访问修饰符。

          (2)在c#2.0中,可以为get或set部分指定访问修饰符(但不能为两者同时指定访问修饰符),从而覆盖了为属性声明指定的访问修饰符。例如,在一个属性中同时创建一个公共取值方法和一个私有赋值方法,是外部类只能对属性进行只读访问,而允许类内的代码想属性写入。

          (3)为取值或赋值方法指定访问修饰符时,这个访问修饰符的限制性必须必应用于整个属性的访问修饰符更严格。

    7、属性和方法调用不允许作为ref或out参数值使用

          ref和out参数值在内部实现时,需要将内存地址传给目标方法。但是,由于属性可能是没有支持字段的虚属性,也有可能是只读或只写的,因此不可能传递其基础存储的地址。所以,不能将属性作为ref或out参数值来传递。同样地道理也使用于方法调用。如果需要将一个属性或方法调用作为ref或out参数值来传递,首先必须将值复制到一个变量中,然后传递该变量。方法调用结束后,在将变量的值赋回属性。

    8、属性和其支持字段的命名规范

         假如属性名为FirstName,那么为该属性提供支持的私有字段来说,一些常见的命名规范是_FirstName和m_FirstName(延续自c++的一种命名规范,m代表member variable 成员变量)。另外,还可以采用camel大小写规范(除第一个单词外其余单词的首字母都大写)。不管为私有字段使用哪一种命名规范,都要依据pascal大小写规范(每个单词的首字母都大写)来命名公共字段和属性。

    9、在类的内部关于字段的访问性问题

           作为一个良好的编程习惯,我们应该只在属性实现的内部访问为属性提供支持的字段。即 我们使用的应该一直是属性,而不要直接调用字段。许多时候,即使是在包容属性的那个类中,也不应该从属性实现的外部访问它所支持的字段。这样一来,在为属性添加了验证逻辑或者其他额外的逻辑后,整个类就可以马上利用那些逻辑。

    10、属性和字段的区别

         @1、属性可以只读或只写,公有成员一定是可读写的。

         @2、属性里头你可以写代码 做自己的验证逻辑即 属性除了公布字段外,还可以在属性上添加对字段的约束规则,比如只读,只写,读写规则,还可以对属性的值范围设置等等。而字段则不可以

          总之,字段能干的,属性一定能干,属性能干的,字段不一定干的了。另外从软件设计的原则来看,属性是方法,应当暴露,而字段是数据应当被封装。

     

     

     

     

    展开全文
  • 属性和字段的区别 在C#中,我们可以非常自由的、毫无限制的访问公有字段,但在一些场合中,我们可能希望限制只能给字段赋于某个范围的值、或是要求字段只能读或只能写,或是在改变字段时能改变对象的其他一些状态...
  • C#字段和属性两者之间的区别以及属性的作用 字段是占用内存的而属性则不会占用内存 咋们先一起看一下代码,进行对比. //成员变量就是类的属性 //字段 public int no; //属性 private int nl; public int Nl ...
  • C#中的字段属性

    2020-11-03 15:50:37
    C#中的字段属性 学习笔记~~~~~~~~~~~~ 字段 字段是定义在方法外面的变量,是成员变量,主要是为了类的内部数据交换使用,字段一般是用private修饰,也可以用readonly修饰,表示只读字段,其它修饰符比较少用;...
  • 一、访问性不同 1、C#属性C#属性是限制只能给变量赋于某个范围的值,是有限制的访问私有变量。 2、C#字段C#字段是...2、C#字段C#字段中不包含setget两个块,可以直接进行字段写入读取。 三...
  • 主要介绍了C#字段属性、只读、构造函数赋值、反射赋值的问题 ,非常不错,具有一定的参考借鉴借鉴价值,需要的朋友可以参考下
  • C#中的字段属性的区别及属性的作用

    万次阅读 多人点赞 2018-05-26 09:56:15
    C#中的字段属性的区别及属性的作用 先上代码 public class Employee { //字段 private string name; //属性 public string Name { get { return name; } set { name = value; } } } 这段代码...
  • 最近,刚接触程序,自学C# 字段一般用在类的内部使用,属性一般供外部类访问。...属性相当于是给字段加了一个保护套,如果想读这个字段的值,属性里面走的 一定是get{},如果想给字段赋值,属性里一定走的是se...
  • 深入理解c#字段属性

    千次阅读 2015-05-19 10:59:21
    属性属性的作用就是保护字段,对字段的赋值取值进行限定 属性的本质就是两个方法,一个叫get()对取值进行限定,一个叫set()对存值进行限定,属性只是对属性的再赋值。 如果只有get是只读属性,set是只写属性。在...
  • C#字段属性的特性

    2020-11-24 10:09:20
    一、字段的定义 字段是在类或结构中直接声明的任意类型的...1.字段通常不使用public关键字,仅在privateprotected时才建议使用。如果您要使用public时,建议转为属性。这是为了符合面向对象设计的原因。简单一句话理
  • 一直对C#中的字段和属性的不是很理解,在这里做个记录。 前几年做WEB开发的时候,声明一个类,比如下面的人是这个样子。 class Person { private int age public void SetAge(int value) { age=value; } ...
  • 类的成员:主讲字段、方法和属性 字段又称为“成员变量”,一般用在一个类内部做数据交互使用,通常使用private修饰; 方法是把一些相关的语句组织在一起,用来执行一个任务的语句块; 类的 构造函数 是类的一个特殊...
  • C#字段和属性的区别

    千次阅读 2011-01-18 13:31:00
    C#中,我们可以非常自由的、毫无限制的访问公有字段,但在一些场合中,我们可能希望限制只能给字段赋于某个范围的值、或是要求字段只能读或只能写,或是在改变字段时能改变对象的其他一些状态,这些单靠字段是无法...
  • C#类的字段和属性

    千次阅读 2018-10-13 11:53:03
    属性属性不是字段,本质上是定义修改字段的方法。 2.字段的划分: (1)静态字段:用修饰符static声明的字段。 不管包含该静态字段的类生成多少个对象或根本无对象,该字段都只有一个实例,静态字段不能被撤销...
  • 我们先来写一个类Person,字段为:name、age、sex,属性:Name、Age、Sex。那么,成员变量:name、...属性和字段都是用来存储数据的,但肯定是有不同的 public class Person { // 字段 private string name; ...
  • 属性(Property) 是类(class)、结构(structure)接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为 域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们...
  • 详细介绍c#类成员(字段属性、方法、事件)。
  • C#中的属性和字段的区别

    千次阅读 2014-01-25 21:50:15
    问题:C#语法中针对类中数据成员的访问引见的属性和字段概念和C++相比,C++中只要属性(觉得相当于于C#中的字段),但是在运用C#过程中,假入本人要写一个类,包含几个数据成员(即字段)但是为了让外边能够访问还...
  • c# 属性字段

    千次阅读 2018-06-06 15:15:50
    字段属性都是类的成员。 字段是数据成员,是隶属于类的变量。 属性是函数成员,它不为数据存储分配内寸,它执行代码。 当字段为private,可以用属性来读写此字段。 代码如下 class C1 { private int ...
  • C#属性字段的理解

    千次阅读 2019-04-27 16:48:49
    1.1属性用于描述对象的静态特征,属性本身不保存数据,他只是外界访问私有字段的一个入口,其数据类型要和字段一致,且采用Pascal命名法,即首字母大写,而字段主要用于类的内部做数据交互使用,因此绝大多数都为...
  • 通过里面的id标签和result标签来建立映射关系,由property和column分别指定实体类属性和数据表的列名。 方案二: 让字段的别名与实体类的属性名相同, 优点:操作简单,容易理解。 缺点:当这样的语句出现的次数过多...
  • C#中属性、字段和成员变量的关系以及区别 1、例子: ​ 1、我们先创建一个类叫Student(学生) ...属性和字段的功能都是用来存储数据,但他们肯定有不同的地方 class Student { //定义私有的成员变量 private
  • 本文实例讲述了C#编程获取实体类属性值的方法。分享给大家供大家参考,具体如下: 遍历获得一个实体类的所有属性名,以及该类的所有属性的值 //先定义一个类: public class User {  public string name { get;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,074
精华内容 34,829
关键字:

c#字段和属性

c# 订阅