浅谈C# 字段和属性

浅谈C# 字段和属性

在C#编程语言中,字段和属性都是用来存储数据的一种方式。但是在使用时有些微小的差别,下面我们来具体讲解一下。

字段(Field)

字段是在类或结构体内被定义的变量,它们存储着对象或结构体的状态信息。字段通常被直接赋值或通过构造函数来初始化。

定义字段

在类中定义字段的语法如下:

访问修饰符 类型 字段名;

例如:

public int Age;
private string name;

字段初始化

字段可以在定义时直接初始化,例如:

public int Age = 30;
private string name = "Tom";

使用字段

可以通过类的实例来访问字段值:

Person person = new Person();
person.Age = 25;
person.Name = "Jack";

示例1 - 定义和使用字段

定义一个简单的Person类,该类有两个字段:姓名和年龄。示例代码如下:

public class Person 
{
    public string Name;
    public int Age;
}

使用该类创建对象并访问字段,示例代码如下:

Person person = new Person();
person.Name = "Tom";
person.Age = 30;
Console.WriteLine("Name: " + person.Name + ", Age: " + person.Age);

输出结果为:Name: Tom, Age: 30。

示例2 - 字段访问级别

在上面的示例中,Name和Age字段的访问级别都是public,这意味着它们可以从该类的任何其他类中访问。但如果将访问级别设置为private,则只有在该类内部才能被访问。例如:

public class Person 
{
    private string name;
    private int age;
}

属性(Property)

属性是一种特殊的方法,它们可以用来读取、写入或计算私有字段的值。属性可以控制字段的访问级别、进行边界检查等。属性通常包括get和set方法,并且在使用时类似于字段。

定义属性

在类中定义属性的语法如下:

访问修饰符 类型 属性名
{
    get { return 取值方法; }
    set { 赋值方法; }
}

例如:

private string name;

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

使用属性

可以通过类的实例来访问属性值:

Person person = new Person();
person.Name = "Tom";
string name = person.Name;

示例3 - 定义和使用属性

继续使用上面定义的Person类,我们将为它创建两个属性:Name和Age。示例代码如下:

public class Person 
{
    private string name;
    private int age;

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

    public int Age 
    {
        get { return age; }
        set { age = value; }
    }
}

使用该类创建对象并访问属性,示例代码如下:

Person person = new Person();
person.Name = "Tom";
person.Age = 30;
Console.WriteLine("Name: " + person.Name + ", Age: " + person.Age);

输出结果为:Name: Tom, Age: 30。

示例4 - 属性的访问级别

和字段类似,属性的访问级别可以被设置为public、private等。例如:

public class Person 
{
    private string name;
    private int age;

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

    public int Age 
    {
        get { return age; }
        set 
        { 
            if(value >= 0 && value <= 120) 
            {
                age = value; 
            } 
            else 
            {
                throw new ArgumentException("Invalid age value.");
            }
        }
    }
}

在上面的示例中,Name属性的set方法的访问级别被设置为private,这意味着只能在该类中进行设置。而Age属性的set方法通过进行了边界检查,避免了无效的赋值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈C# 字段和属性 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • 详解ASP.NET Core MVC 源码学习:Routing 路由

    详解ASP.NET Core MVC 源码学习:Routing 路由 Routing是ASP.NET Core MVC中的一个重要组件,它负责将HTTP请求映射到相应的控制器和动作方法。在本文中,我们将深入学习ASP.NET Core MVC中Routing的实现原理和源码。 Routing的实现原理 Routing的实现原理可以分为两个部分:路由匹配和路由…

    C# 2023年5月16日
    00
  • C# IsReadOnly:获取一个值,该值指示集合是否为只读

    C#中的IsReadOnly属性用于指示集合或数组是否为只读。如果集合或数组为只读,则不允许用户添加、修改或删除其元素。IsReadOnly是一个bool类型的属性,其值默认为false。当IsReadOnly为true时,集合或数组将变为只读状态,任何修改都会引发NotSupportedException异常。 以下是IsReadOnly属性用法的示例: …

    C# 2023年4月19日
    00
  • ajax+php控制所有后台函数调用

    下面是关于“ajax+php控制所有后台函数调用”的完整攻略,包含两个示例。 1. 什么是Ajax Ajax(Asynchronous JavaScript and XML)是一种用于创建动态Web应用程序的技术。它使用JavaScript和XML(或JSON)来实现异步数据交换,从而避免了页面的重新加载。Ajax可以使Web应用程序更加快速、灵活和交互性。…

    C# 2023年5月15日
    00
  • 常用C#关键字详解教程(比较全面)

    常用C#关键字详解教程 C#是一种现代的、对象导向的编程语言,用于.NET平台。在C#中有许多关键字,这些关键字用于定义变量、控制流程、类或结构、枚举等。下面我们将详细讲解C#中常用的关键字。 变量定义相关关键字 var var用于在编译期间推断变量类型。它指示编译器基于初始化表达式计算左侧变量的类型。例如: var str = "hello wo…

    C# 2023年5月15日
    00
  • Effective C# 使用成员初始化器而不是赋值语句

    什么是成员初始化器 成员初始化器是C#中的一种特殊的语法形式,它主要用于数据成员、属性或变量的初始化,它以“=”符号为连接符,左边是成员名称(字段、属性或变量),右边是初始值。在C# 6.0 之前,初始化需要使用构造函数或在声明后赋值的方式进行,但在C# 6.0的新特性中,通过成员初始化器,我们可以在以前不可能或者是特别困难的情况下对对象进行初始化(比如匿名…

    C# 2023年6月6日
    00
  • C#中哈希表(HashTable)用法实例详解(添加/移除/判断/遍历/排序等)

    C#中哈希表(HashTable)用法实例详解 哈希表(HashTable)是一种使用哈希算法实现的数据结构,它能在平均情况下以常数时间复杂度进行基本操作(添加、删除、查找)。 在C#中,哈希表可以用System.Collections.Hashtable类实现。本文将详细介绍哈希表在C#中的用法,包括添加、移除、判断、遍历、排序等。 添加元素 使用哈希表添…

    C# 2023年6月7日
    00
  • .NET中创建对象的几种方式和对比

    一、.NET中创建对象的几种方式 .NET中创建对象的方式有以下几种: 使用new操作符创建对象 使用Activator.CreateInstance方法创建对象 使用反射及ConstructorInfo类创建对象 使用Object类的MemberwiseClone()方法创建对象 使用FormatterServices.GetUninitializedOb…

    C# 2023年6月1日
    00
  • C# 基于消息发布订阅模型的示例(下)

    我来为您详细讲解一下“C# 基于消息发布订阅模型的示例(下)” 的完整攻略。 什么是消息发布订阅模型? 消息发布订阅模型是一种消息传递模式,它包含一个发布者和许多订阅者。发布者通常不知道有哪些订阅者,而订阅者则可以动态地订阅和取消订阅发布者。 消息发布订阅模型的优势 较容易增加或删除订阅者,无需修改发布者代码。 可以实现一对多的关系,即一个事件可以有多个订阅…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部