属性、构造函数、只读字段、匿名类型

属性:概念指一个方法或一对方法(指get和set方法)在客户端看来,它是一个字段。

using System;

namespace CodeReview
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadKey();
        }
    }
    class Person
    {
        //属性声明第一种方式
        public string Name
        {
            //get不带任何参数,并且必须返回属性声明的类型,这里属性的类型是string
            get
            {
                return "this is the property.value";
            }
            set
            {
                //set方法用于给Name属性赋值
            }
        }
        //属性声明第二种方式:这里使用了Pascal和camel命名法来区别私有字段和属性
        private int age;
        public int Age
        {
            get
            {
                return age;
            }
            set
            {
                age = value;
            }
        }
        //通过省略属性的get或set方法可以创建只读或只写的属性
        public string TelePhone
        {
            get
            {
                return "this is the property.value";
            }
        }
        //属性的get和set方法允许有不同的访问修饰符
        public string Address
        {
            get
            {
                return "this is the property.value";
            }
            private set
            {

            }
        }
        //自动实现的属性:如果属性的get和set访问器中没有任何逻辑,就可以使用自动实现的属性(使用自动实心的属性就无法在属性访问器中验证属性的有效性)
        public string SchoolName { get; set; }
    }
}

构造函数:声明构造函数其实就是声明一个与类同名的方法,但该方法没有返回值,构造函数一般用来初始化成员字段的值。(除非有自己对字段或属性的赋值,否则没有必要显式给类提供构造函数,因为编译器会在后台创建一个默认的构造函数来把成员字段初始化为标准默认值)

时间: 2024-10-07 22:29:02

属性、构造函数、只读字段、匿名类型的相关文章

C#匿名类型(Anonymous Type)学习日记

当我们不要定义复杂的方法,事件,构造函数这样复杂的类的时候,可以动态的生成一个自定义的数据类型 --> 匿名类型. 1.定义匿名类型 定义一个匿名类型时,需要用到 var 关键字和对象初始化语法. var : 编译器会在编译时自动生成新类定义(我们无法在C#代码中看到类的名称). 初始化:它将告诉编译器为新创建的类型创建私有的后台字段和(只读的)属性. 通过传递参数构建一个匿名类型,并打印相关信息 private static void BiuldAnonymousType(string mak

【C#复习总结】匿名类型由来

1 属性 这得先从属性开始说,为什么外部代码访问对象内部的数据用属性而不是直接访问呢,这样岂不是更方便一些,但是事实证明直接访问是不安全的.那么,Anders Hejlsberg(安德斯·海尔斯伯格)就为C#加入了属性这种语法糖,用起来跟数据成员一样,但实际上是 setXX()和getXX(),既安全又方便. 属性:是访问对象的首选方式,因为它们禁止外部代码访问对象内部的数据存储机制的实现. public int MyIntProp { get { //property get code } s

15.C#回顾及匿名类型(八章8.1-8.5)

今天的篇幅应该会很长,除了回顾前面学的一些,还有写一些关于匿名类型的相关知识,总体上对后续的学习很有帮助,学好了,后面更容易理解,不明白的,那就前面多翻几次,看多了总是会理解的.那么,进入正题吧. 自动实现属性 我们的很多工作都是由编译器帮我们去完成,如我们要说的自动实现属性.使用自动实现属性时,C#3执行了一个简单的编译转换,在类的内部生成一个私有的字段,使用不友好的命名(防止命名冲突).在C#2中允许为取值和赋值方法指定不同的访问权限,现在我们还可以创建静态的自动属性. 隐式类型 使用隐式类

C#3.0中的新增功能02 匿名类型

连载目录    [已更新最新开发文章,点击查看详细] 匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型. 类型名由编译器生成,并且不能在源代码级使用. 每个属性的类型由编译器推断. 可通过使用 new 运算符和对象初始值创建匿名类型. 有关对象初始值设定项的详细信息,请参阅对象和集合初始值设定项. 以下示例显示了用两个名为 Amount 和 Message 的属性进行初始化的匿名类型. var v = new { Amount = 108, Mess

匿名类型(C# 编程指南)

匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型. 类型名由编译器生成,并且不能在源代码级使用. 每个属性的类型由编译器推断.可通过使用 new 关键字和对象初始值创建匿名类型. 以下示例显示了用两个名为Amount和Message的属性进行初始化的匿名类型. 1 var v = new { Amount = 108, Message = "Hello" }; 2 3 // Rest the mouse pointer over v.Amo

定义类+类实例化+属性+构造函数+匿名类型var+堆与栈+GC回收机制+值类型与引用类型

为了让编程更加清晰,把程序中的功能进行模块化划分,每个模块提供特定的功能,而且每个模块都是孤立的,这种模块化编程提供了非常大的多样性,大大增加了重用代码的机会. 面向对象编程也叫做OOP编程 简单来说面向对象编程就是结构化编程,对程序中的变量结构划分,让编程更清晰. 类的概念: 类实际上是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法. 类定义了类的每个对象(称为实例)可以包含什么数据和功能. 类中的数据和函数称为类的成员:数据成员        函数成员 数据成员: 数据成员

EF 序列化实体为Json时的循环引用问题(不用自己写实体,不用匿名类型,不用EF的上下文属性)

自己写实体可以完美解决这个问题. 用匿名类型也可以. 设置上下文方法如下: (jz为数据库上下文对象) jz.Configuration.ProxyCreationEnabled = false;jz.Configuration.LazyLoadingEnabled = false; 不用这个的原因是Virtual属性也会生成.(只是占个位,[]里面没内容,但看着不爽) 我采用的方法是过滤掉Virtual属性的方法: 一个基于Json.net的类 public class LimitPropsC

asp.net core系列 28 EF模型配置(字段,构造函数,拥有实体类型)

原文:asp.net core系列 28 EF模型配置(字段,构造函数,拥有实体类型) 一. 支持字段 EF允许读取或写入字段而不是一个属性.在使用实体类时,用面向对象的封装来限制或增强应用程序代码对数据访问的语义时,这可能很有用.无法使用数据注释配置.除了约定,还可以使用Fluent API为属性配置支持字段. 1.1 约定 public class Blog { // _<camel-cased property name> private string _url; public int

理解隐式类型、对象初始化程序和匿名类型

在C# 3.0中,几乎每个新特性都是为LINQ服务的.所以,本文将介绍下面几个在C# 3.0中引入的新特性: 自动实现的属性 隐式类型的局部变量 对象和集合初始化程序 隐式类型的数组 匿名类型 其实这几个特性都是比较容易理解的,对于这几个特性,编译器帮我们做了更多的事情(想想匿名方法和迭代器块),从而简化我们的代码. 自动实现的属性 在C# 3.0以前,当我们定义属性的时候,一般使用下面的代码 public class Book { private int _id; private string

Programming C#.Classes and Objects.只读字段

只读字段 当字段声明中含有 readonly 修饰符时,该声明所引入的字段为只读字段.给只读字段的直接赋值只能作为声明的组成部分出现,或在同一类中的实例构造函数或静态构造函数中出现.(在这些上下文中,只读字段可以被多次赋值.)准确地说,只在下列上下文中允许对 readonly 字段进行直接赋值: 在用于引入该字段的变量声明符中(通过添加一个变量初始值设定项). 对于实例字段,在包含字段声明的类的实例构造函数中:对于静态字段,在包含字段声明的类的静态构造函数中.也只有在这些上下文中,将 reado