广告
返回顶部
首页 > 资讯 > 精选 >C#中get、set函数怎么用
  • 464
分享到

C#中get、set函数怎么用

2023-06-17 21:06:46 464人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关C#中get、set函数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C# get set不提倡将域的保护级别设为 public而使用户在类外任意操作--那样太不OO,或

这篇文章将为大家详细讲解有关C#中get、set函数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

C# get set不提倡将域的保护级别设为 public而使用户在类外任意操作--那样太不OO,或者具体点说太不安全!对所有有必要在类外可见的域,C#推荐采用属性来表达。属性不表示存储位置,这是属性和域的根本性的区别。下面是一个典型的属性设计:

using System;  class MyClass  {  int integer;  public int Integer   {  get {return integer;}  set {integer=value;}  }  }  class Test  {  public static void Main()  {  MyClass MyObject=new MyClass();  Console.Write(MyObject.Integer);  MyObject.Integer++;  Console.Write(MyObject.Integer);  }  }

一如我们期待的那样,程序输出0 1。我们可以看到属性通过对方法的包装向程序员提供了一个友好的域成员的存取界面。这里的value是C# get set的关键字,是我们进行属性操作时的set的隐含参数,也就是我们在执行属性写操作时的右值。

属性提供了只读(get),只写(set),读写(get和 set)三种接口操作。对域的这三种操作,我们必须在同一个属性名下声明,而不可以将它们分离,看下面的实现:

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

上面这种分离Name属性实现的方法是错误的!我们应该像前面的例子一样将他们放在一起。值得注意的是三种属性(只读,只写,读写)被C# get set认为是同一个属性名,看下面的例子:

class MyClass  {  protected int num=0;  public int Num  {  set {  num=value;  }  }  }  class MyClassDerived: MyClass  {  new public int Num  {  get {  return num;  }  }  }  class Test  {  public static void Main()  {  MyClassDerived MyObject = new MyClassDerived();  //MyObject.Num= 1; //错误 !  ((MyClass)MyObject).Num = 1;  }  }

我们可以看到MyClassDerived中的属性Num-get{}屏蔽了MyClass中属性Num-set{}的定义。

当然属性远远不止仅仅限于域的接口操作,属性的本质还是方法,我们可以根据程序逻辑在属性的提取或赋值时进行某些检查,警告等额外操作,看下面的例子:

class MyClass  {  private string name;  public string Name  {  get { return name; }  set {  if (value==null)  name="Microsoft";  else name=value;  }  }  }

由于属性的方法的本质,属性当然也有方法的种种修饰。属性也有5种存取修饰符,但属性的存取修饰往往为public,否则我们也就失去了属性作为类的公共接口的意义。除了方法的多参数带来的方法重载等特性属性不具备外, virtual, sealed, override, abstract等修饰符对属性与方法同样的行为,但由于属性在本质上被实现为两个方法,它的某些行为需要我们注意。看下面的例子:

abstract class A  {  int y;  public virtual int X  {  get { return 0; }  }  public virtual int Y  {  get { return y; }  set { y = value; }  }  public abstract int Z { get; set; }  }  class B: A  {  int z;  public override int X  {  get { return base.X + 1; }  }  public override int Y  {  set { base.Y = value < 0? 0: value; }  }  public override int Z  {  get { return z; }  set { z = value; }  }  }

这个例子集中地展示了属性在继承上下文中的某些典型行为。这里,类A由于抽象属性Z的存在而必须声明为abstract。子类B中通过base关键字来引用父类A的属性。类B中可以只通过Y-set便覆盖了类A中的虚属性。

静态属性和静态方法一样只能存取类的静态域变量。我们也可以像做外部方法那样,声明外部属性。

关于“C#中get、set函数怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: C#中get、set函数怎么用

本文链接: https://www.lsjlt.com/news/293641.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#中get、set函数怎么用
    这篇文章将为大家详细讲解有关C#中get、set函数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C# get set不提倡将域的保护级别设为 public而使用户在类外任意操作--那样太不OO,或...
    99+
    2023-06-17
  • C#中{get;set;}的具体使用
    在C#程序中经常会看到set,get的配套使用,很多人不知道它的用途。我就在这向大家讲讲,也加深一下自己的印象。 //这里有两个类 public class person1 { ...
    99+
    2023-02-06
    C# {get;set;} C# GET SET
  • python中get函数怎么用
    在python中使用get函数的方法get:get()函数的作用是返回指定键的值。get()函数语法:dict.get(key, default=None)参数:key:字典中要查找的键。default:如果指定键的值不存在时,返回该默认值...
    99+
    2022-10-24
  • C#中关键字get、set、value、partial、where和yield怎么用
    这篇文章主要介绍C#中关键字get、set、value、partial、where和yield怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!C#关键字——get、set、valueget 在属性或索引...
    99+
    2023-06-17
  • php中get和set方法怎么使用
    本篇内容主要讲解“php中get和set方法怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php中get和set方法怎么使用”吧!首先,get方法是用于获取类的属性值的方法,常常被称为“...
    99+
    2023-07-05
  • python字典中get()函数怎么用
    这篇文章主要介绍python字典中get()函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.get()函数利用键来获取值之前在学习python的时候,在获取值得时候常用的方法就是直接print(dict[...
    99+
    2023-06-29
  • jQuery如何使用同一函数实现set和get
    这篇文章主要介绍了jQuery如何使用同一函数实现set和get,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。...
    99+
    2022-10-19
  • R语言中assign函数和get函数怎么用
    这篇文章主要介绍了R语言中assign函数和get函数怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系...
    99+
    2023-06-14
  • ES6 javascript中class类的get与set怎么用
    这篇文章将为大家详细讲解有关ES6 javascript中class类的get与set怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:与 ES5 一样, 在...
    99+
    2022-10-19
  • C#中get方法怎么用
    这篇文章给大家分享的是有关C#中get方法怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C#中属性是类,接口,结构的命名成员,可以通过C# get set访问器访问私有成员.如public cla...
    99+
    2023-06-17
  • C/C++中怎么用Lua函数
    本篇内容介绍了“C/C++中怎么用Lua函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.简介偶们这次...
    99+
    2022-10-19
  • C#的set怎么使用
    本文小编为大家详细介绍“C#的set怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#的set怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。包含不重复元素的集合称为“集(set)”。.NET F...
    99+
    2023-06-30
  • Java中构造函数,set/get方法和toString方法使用及注意说明
    目录一、构造函数二、set()/get()方法三、toString()方法总结一、构造函数 构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对象并传入参数的时候,会自动...
    99+
    2023-01-09
    Java构造函数 Java set方法 Java get方法 Java toString方法
  • C++中的函数怎么用
    这篇文章将为大家详细讲解有关C++中的函数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、基础函数:封装了一段代码,可以在一次执行过程中被反复调用,包含函数头和函数体;函数头:函数名称(标识符),...
    99+
    2023-06-21
  • C/C++中文件IO函数怎么用
    这篇文章主要为大家展示了“C/C++中文件IO函数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C/C++中文件IO函数怎么用”这篇文章吧。文件(file)通常是在磁盘或固态硬盘上的一段已...
    99+
    2023-06-29
  • C语言中函数怎么用
    这篇文章主要为大家展示了“C语言中函数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言中函数怎么用”这篇文章吧。函数函数定义百度百科对函数的定义:子程序在计算机科学中,子程序是一个大型...
    99+
    2023-06-25
  • C#中内联函数怎么用
    这篇文章将为大家详细讲解有关C#中内联函数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C++ 中有个内联函数,使用 inline 来修饰函数,编译器就会对其进行优化,将此函数作为代码判断插入到调用...
    99+
    2023-06-29
  • C++中GetAsyncKeyState函数怎么使用
    GetAsyncKeyState函数用于获取指定虚拟键的状态。它的声明如下:```cppSHORT WINAPI GetAsyncK...
    99+
    2023-09-29
    C++
  • C++中CreateFile函数怎么使用
    在C++中使用CreateFile函数来创建或打开一个文件,需要遵循以下步骤:1. 包含头文件:```cpp#include ```...
    99+
    2023-09-26
    C++
  • C++中replace()函数怎么使用
    这篇文章主要介绍“C++中replace()函数怎么使用”,在日常操作中,相信很多人在C++中replace()函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++中replace()函数怎么使用...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作