返回顶部
首页 > 资讯 > 精选 >C#组件设计的方法有哪些
  • 238
分享到

C#组件设计的方法有哪些

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

本篇内容主要讲解“C#组件设计的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#组件设计的方法有哪些”吧!在C#中为类预定义属性是件再简单不过的事,见程序1。程序1using&nbs

本篇内容主要讲解“C#组件设计的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#组件设计的方法有哪些”吧!

在C#中为类预定义属性是件再简单不过的事,见程序1。

程序1

using System;  namespace PropertiesDemo  {   public class MyData      public class Class1   {  private MyData _data;  public MyData Data  {   get { return _data; }  }  public Class1()  {   _data = new MyData();  }   }  }

这是相当常见的属性预定义方式,同时也是个可正常运行的程序,不过其中隐含着一个设计上的问题,那就是创建MyData对象的时机。按照程序2-1的手法,当Class1对象被创建之初,其内的_data对象也随着被创建起来,这造成了Class1对象于创建初期就付出了一个MyData对象的内存成本,这对简单的类来说或如牛毛,但倘若Class1对象中拥有一群这类属性呢?为了解决这类问题,.net Framework中大量使用Lazy-Allocate(缓分配)技术,见程序2。

程序2 Lazy-Allocate范例

public class Class1  {   private MyData _data;   public MyData Data   {  get  {   if(_data == null)  data = new MyData();   return _data;  }   }   public Class1() { }  }

Lazy-Allocate的设计概念很简单,就是未使用前不预付成本。相对于程序2-1所使用的Pre-Allocate(预分配)概念,程序2-2采取以时间换取空间的策略,付出存取判断式的代价来减轻空间浪费的情况。当然,Pre-Allocate也不是一无是处,不须预判断的快速存取特色适用于用户必然会存取的属性,但在一些特定的属性上,例如asp.net中常见的Style属性就不适合使用Pre-Allocate技巧,因为用户不一定会使用该属性,于此情况下,Lazy-Allocate模式说可以让对象省下一些内存成本。

Event

事件处理是组件设计中相当重要的一环,在C#中事件与delegate是紧密相关的,程序3是一个简单的事件范例。

程序3 简单的事件范例

using System;  namespace EventDemo  {   public delegate void Processhandler(object sender);   public class Class1   {  private event ProcessHandler _processHandler = null;  public event ProcessHandler ProcessStart  {   add   {  _processHandler += value;   }   remove   {  _processHandler -= value;   }  }  public void Process()  {   _processHandler(this);   for(int i = 0; i < 10; i++)  i = i+1;  }  public Class1()  {}   }  }

C#之中delegate扮演着函数指针的角色,用户可以将某个函数加入一个delegate之中,而一个delegate允许用户加入一个以上的函数,当调用此delegate时就等同于调用其内所含的所有函数。不过程序2-3的设计手法潜藏着一个问题,就是当事件数众多时,对象就必须付出相应数量的delegate变量,如程序4所示。

程序4 传统事件设计

private event ProcessHandler _processStart = null;  private event ProcessHandler _processEnd = null;  private event ProcessHandler _processStep = null;

到此,相信大家对“C#组件设计的方法有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: C#组件设计的方法有哪些

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

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

猜你喜欢
  • C#组件设计的方法有哪些
    本篇内容主要讲解“C#组件设计的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#组件设计的方法有哪些”吧!在C#中为类预定义属性是件再简单不过的事,见程序1。程序1using&nbs...
    99+
    2023-06-17
  • Python设计方法有哪些
    这篇文章主要介绍“Python设计方法有哪些”,在日常操作中,相信很多人在Python设计方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python设计方法有哪些”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-02
  • ASP.NET组件设计的知识点有哪些
    本篇内容介绍了“ASP.NET组件设计的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ASP.NET组件设计一、什么是ASP.N...
    99+
    2023-06-18
  • 数据库的设计方法有哪些
    本篇内容介绍了“数据库的设计方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 数据库设计的方法有哪些
    这篇文章主要讲解了“数据库设计的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库设计的方法有哪些”吧!数据库设计技巧: 第2 部分—...
    99+
    2024-04-02
  • C#数组的复制方法有哪些
    本篇内容主要讲解“C#数组的复制方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#数组的复制方法有哪些”吧!C#数组复制方法有哪些呢?在实际开发的过程中,我们需要掌握学习的有哪些呢?这...
    99+
    2023-06-17
  • c#数组的声明方法有哪些
    在C#中,有几种方法可以声明数组: 使用关键字new:使用关键字new来声明一个新的数组,并指定数组的大小。例如: int[] ...
    99+
    2024-02-29
    c#
  • 设计模式速记的方法有哪些
    这篇文章主要讲解了“设计模式速记的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“设计模式速记的方法有哪些”吧!工厂方法模式(Factory Met...
    99+
    2024-04-02
  • 天津网站设计的方法有哪些
    1. 用户体验设计(UX设计):以用户为中心,通过调研、分析用户需求、行为模式等,设计出符合用户习惯、易于使用、能够满足用户需求的网...
    99+
    2023-06-14
    天津网站设计
  • 网页版式设计的方法有哪些
    本篇内容介绍了“网页版式设计的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 广告主图搭配简洁的格栅系统无论屏幕尺寸大小如何,...
    99+
    2023-06-10
  • uniapp组件传值的方法有哪些
    这篇文章主要介绍“uniapp组件传值的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“uniapp组件传值的方法有哪些”文章能帮助大家解决问题。父组件给子组件传值创建子组件comp.vue...
    99+
    2023-07-05
  • angular组件传值的方法有哪些
    Angular组件之间传值的方法有以下几种: 输入属性(@Input):在子组件上通过@Input装饰器定义一个输入属性,然后在...
    99+
    2023-10-24
    angular
  • react创建组件有哪些方法
    这篇文章主要介绍了react创建组件有哪些方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。函数式组件:(1)语法:function myConponent(pro...
    99+
    2023-06-14
  • qt设计登录界面的方法有哪些
    Qt设计登录界面的方法有以下几种:1. 使用Qt的UI设计工具:Qt提供了一个可视化的UI设计工具,可以直接通过拖拽和布局来设计登录...
    99+
    2023-08-09
    qt
  • C语言数组创建的方法有哪些
    这篇“C语言数组创建的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言数组创建的方法有哪些”文章吧。1.一维数...
    99+
    2023-06-26
  • C语言数组的操作方法有哪些
    本篇内容主要讲解“C语言数组的操作方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言数组的操作方法有哪些”吧!一、一维数组1.创建//如何创建数组int num[10];c...
    99+
    2023-06-30
  • c语言数组赋值的方法有哪些
    在C语言中,数组赋值的方法有以下几种:1. 逐个赋值:通过遍历数组的每个元素,逐个给数组元素赋值。```cint arr[5];ar...
    99+
    2023-08-30
    c语言
  • c语言清空数组的方法有哪些
    在C语言中,清空数组的方法有以下几种: 使用循环遍历数组,将每个元素赋值为0或者其他初始值。 for (int i = 0; i...
    99+
    2023-10-26
    c语言
  • React组件间通信的方法有哪些
    这篇文章给大家分享的是有关React组件间通信的方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、父子组件通信原理:父组件通过props(与vue中的props区分开)向子组件通信,子组件通过回调事件与...
    99+
    2023-06-25
  • Tkinter组件Scrollbar的使用方法有哪些
    这篇“Tkinter组件Scrollbar的使用方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Tkinter组件S...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作