C#get和set

2023-11-06

为什么要使用get和set

因为在代码中存在着私有的值,我们不能在它的私有域外调用这些私有值,若要访问这些私有值,则需要使用get和set。我们可以通过该类中共有的方法来使用私有值。
举一个错误的代码:

// using System;
namespace Keqin
{
    class Hutao
    {
        public static void Main(String[] args)
        { 
            Suo suo = new Suo();
            int l = suo.a;//错误
        }
       
    }
    class Suo
    {
        private int a = 10;
        public int A
        {
            get { return a; }
        }
    }
}

因为Suo里的a是用private修饰的私有变量,所有不能直接访问,会报错!

使用get访问私有变量

演示一片代码来访问私有值:

// using System;
namespace Keqin
{
    class Hutao
    {
        public static void Main(String[] args)
        { 
            Suo suo = new Suo();
            int l = suo.A;
            Console.WriteLine(l);
        }

    }
    class Suo
    {
        private int a = 10;
        public int A
        {
            get { return a; }
        }
    }
}

调用get,这样写可以访问Suo里面的私有值a.

使用set和get定义一个索引器

定义一个属性(property)包括提供属性名称。索引器定义的时候不带有名称,但带有 this 关键字,它指向对象实例。下面是菜鸟教程(https://www.runoob.com/csharp/csharp-indexer.html)上解释的语法:

// element-type this[int index]
{
   // get 访问器
   get
   {
      // 返回 index 指定的值
   }

   // set 访问器
   set
   {
      // 设置 index 指定的值
   }
}

接下来我来举一个实例:

//using System;
namespace Keqin
{
    class Hutao
    {
        public static void Main(String[] args)
        { 
            Suo suo = new Suo();
            int l = suo[1];//get方法
            suo[30] = 500;//set方法

        }

    }
    class Suo
    {
        private int a = 10;
        private int[] b = new int[3];
        public int this[int t]
        {
            get
            {
                Console.WriteLine("这里是get");
                Console.WriteLine(t);
                return a;
            }
            set
            {
                Console.WriteLine("这里是set");
                Console.WriteLine(t);
                t = value;
                Console.WriteLine(value);
            }
        }
        public int A
        {
            get { return a; }
        }
    }
}

结果是:在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#get和set 的相关文章

  • C++ 维护子类对象的混合集合

    如果我在这里错过了一个相当基本的概念 我很抱歉 但我正在尝试弄清楚如何维护多个类类型的集合 所有类类型都派生自同一个父类 并且在检索它们时仍然可以访问它们的特定于子类的方法从集合中 作为上下文 我有一个基类 BaseClass 和许多类 例
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 在 Windows Phone silverlight 8.1 上接收 WNS 推送通知

    我有 Windows Phone 8 1 silverlight 应用程序 我想使用新框架 WNS 接收通知 我在 package appxmanifest 中有
  • 可访问性不一致:参数类型的可访问性低于方法

    我试图在两个表单之间传递一个对象 基本上是对当前登录用户的引用 目前 我在登录表单中有一些类似的内容 private ACTInterface oActInterface public void button1 Click object s
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个

随机推荐

  • loguru使用parse解析压缩日志文件(以zip为例)

    loguru保存到zip压缩文件 使用如下代码保存日志文件到zip压缩文件中 from loguru import logger import sys logger remove logger add my cal record filte
  • easyui 表头动态生成

    使用EasyUI实现列不固定的表格 需要引入easyUi中的jQuery easyui min js easyui css icon css 步骤如下 jsp页面 1 新建一个准备放table的div容器 div div 2 在页面加载好后
  • 【netty】Netty堆外内存泄露排查盛宴

    1 概述 转载 Netty堆外内存泄露排查盛宴 2 导读 Netty 是一个异步事件驱动的网络通信层框架 用于快速开发高可用高性能的服务端网络框架与客户端程序 它极大地简化了 TCP 和 UDP 套接字服务器等网络编程 Netty 底层基于
  • jQuery事件冒泡#change(fn)事件结合应用案例--校验用户名是否存在

    事件冒泡即当触发内部节点元素时 同时会触发外部与之关联的节点事件 取消事件冒泡 return false blur fn blur 与change 区别 1 blur fn 失去焦点 触发每一个匹配元素的blur事件 2 change fn
  • 硬件系统工程师宝典(4)-----传输过程的信号要如何描述?

    各位同学大家好 欢迎继续做客电子工程学习圈 今天我们继续来讲这本书 硬件系统工程师宝典 上篇我们说到为实现信号的有效传输 需要保证信号波形的完整和信号时序的完整 并且知道了从时域 频域两个角度去分析信号 那么 在传输过程的信号要如何描述 就
  • OpenGL案例2----keyBoard键盘交互和鼠标交互

    include
  • Docker安装MySQL并配置my.cnf

    1 创建一个临时的mysql 以便复制出my cnf等数据 docker run restart always d v opt data mysql var lib mysql p 3306 3306 name test mysql e M
  • 二进制、十进制、十六进制数值对照表

  • Pandas 日期处理:生成及去除工作日与节假日

    Pandas 日期处理 生成工作日与节假日 Pandas 提供了许多日期处理功能 使得处理时间序列数据变得容易 本文将介绍如何使用 Pandas 生成工作日和节假日 在进行实际操作前 请确保已安装了 Pandas 库 安装方法如下 pip
  • 音视频总结(1) -- 主流音视频平台研究与比较

    虽然本科专业就是图像通信 但是自己真正的从无到有 从0到1的主导和实现一个音视频平台 实现移动互联网时代的音视频通信却是在十几年之后 音视频的使用场景包括视频会议 直播和点播等 下面是对市场上已有产品的研究与调研 流行音视频产品 维基百科上
  • C/C++服务器和客户端交互笔记

    C C 服务器开发 网络与通信Socket Socket通信三要素 通信的目的地址 使用的端口号 http 80 smtp 25 使用的传输协议 TCP UDP nslookup xx 可以查询xx网址的IP地址 Socket通信模型 te
  • 关于qmake报错

    qmake could not find a Qt installation of 或 qmake could not exec usr lib x86 64 linux gnu qt4 bin qmake 或 qmake could no
  • UE5 MediaPlayer无法正确播放视频

    StreamMediaSource 播放流媒体源 流媒体源 Stream Media Source 是一种资源 允许你在虚幻引擎5 UE5 中流送支持的 URL格式视频 定义流后 你可以将其加载并使用 媒体播放器 资源在UE4中播放 并可
  • QT笔记- QTreeView设置三态setAutoTristate() 树形视图自动复选框——源码分享

    说明 Qt中函数QStandardItem setAutoTristate 无实际功能 仅作为一个布尔标记 若要实现自动三态复选框功能 需要自行代码构建 本文通过编写两个派生类 完成了这个功能 类源码和一个示例如下 源码 自动三态item
  • 《人工智能狂潮》读后感——什么是人工智能?(一)

    从本专栏开始 作者正式研究Python深度学习 神经网络及人工智能相关知识 前一篇文章详细讲解了无监督学习Autoencoder的原理知识 然后用MNIST手写数字案例进行对比实验及聚类分析 本篇文章将分享 人工智能狂潮 书籍内容 包括人工
  • 【一题多解】插入回文串——典型的动态规划区间模型

    插入回文串 典型的动态规划区间模型 题目 给定一个长度为n n lt 1000 的字符串A 求插入最少多少个字符使得它变成一个回文串 之前我做的DP的问题 大多都是二维的或者一维的 今天就讲下这道典型的一维区间模型 附上之前写过的二维一维D
  • 二叉树叶子节点数和度为2的节点数

    我们设度为0 1 2的节点分别为n0 n1 n2个 那么节点总数n n0 n1 n2 然而边数b n 1 并且b n1 2 n2 n 1 n0 n1 n2 1 由此式我们可以推出n0 n2 1 也就是说叶子节点要比度为二的节点多一个 转载于
  • 总结 运行Scrapy项目结果出错:KeyError: ‘Spider not found:

    1 命令行窗口的当前路径不在scrapy工程目录中 需要先进入scrapy工程目录 不一定要工程根目录 下一级子目录也可以 2 执行命令 scrapy crawl fileName 时 不要加 py后缀 本人就是加了后缀 一直错误 正确 s
  • ChromeOS 体验

    概述 作为一名开发人员 一直关注各种桌面级 移动级操作系统的进展 其中就包含 ChromeOS 对于一个开发者 客户端 嵌入式 硬件开发者除外 而言 对于操作系统的要求如下 流畅 稳定而现代化的系统 UI 完整的 Linux 环境 好用的浏
  • C#get和set

    这里写目录标题 为什么要使用get和set 使用get访问私有变量 使用set和get定义一个索引器 为什么要使用get和set 因为在代码中存在着私有的值 我们不能在它的私有域外调用这些私有值 若要访问这些私有值 则需要使用get和set