由实例计数器引出(C#)

C#组件开发——简单计数器 using System;using System.IO;using System.Web.UI;using System.Web.UI.WebControls;using System.ComponentModel;using System.Drawing;using System.Data;using System.Data.OleDb;namespace Web.UI.WebContro 阅读详情

由实例计数器引出(C#)

好久没发表文章了,说也有趣,突然感觉C#中的有些类,为什么,其构造器是不可见的?

而且通常这些类在一个程序中往往只有一个实例存在。于是,我做了个实验结果如下:

由该例子引出:
using System;
 
 
namespace ConsoleApplication1
{
 /// <summary>
 /// Class1 的摘要说明。
 /// </summary>
 class Class1
 {
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
   
  [STAThread]
    static void Main(string[] args)
  {
   //
   // TODO: 在此处添加代码以启动应用程序
 
   Class2 c1=Class2.Init;
   Class2 c2=Class2.Init;
   c2.refDis();

   Class3 c3=new Class3();
   Class3 c4=c3;
   c4.refDis();


   Class3 c5=new Class3();
   c5.refDis();

   
   Console.ReadLine();
 
  }
 
 }
 
 class Class2
 {
  static int ref_2=0;
  private Class2()
  {
   ++ref_2;
  }
  public static readonly Class2 Init=new Class2();
  public void refDis()
  {
   Console.WriteLine("Class2 的引用:   "+ref_2);
  }
 }
 class Class3
 {
  static int ref_3=0;
  public Class3(){++ref_3;}
  public void refDis()
  {
   Console.WriteLine("Class3 的引用:   "+ref_3);
  }
 }

 }
 


输出结果:
Class2 的引用:   1
Class3 的引用:   1
Class3 的引用:   2


看了上面的结果也许你会感到有些吃惊,也许不会,不是吗?很多情况下,我们都试图

来得到一个类的实例有多少?通常会想到的做法是实例计数器。是的,用一个static变量

来做实例计数器是在合适不过的了。可是,也有些时候,我们并不希望,我们的实例太多

如:DataRead它始终只有一个。那么,我们该怎么做呢?看到了上面我的实验结果了吗?

啊哏,发现什么了吗?public static readonly Class2 Init=new Class2();

对这一句很感兴趣是吗?你有什么异议吗?去掉那个static行吗?那么好吧,如你所愿。

象这样:public  readonly Class2 Init=new Class2(); 让我们看看会发生什么,啊噢

瞧见了。没办法实例化操作了。呵呵。。。别担心,让我来进一步说明,static成员被

放在静态存储区,是在程序加载初期就完成配置的。那么很显然,Init的值,事实上是

在一开始,就new了一个对象给它。那么它持有该对象的一个引用。下面让我们看看这两句

Class2 c1=Class2.Init;

Class2 c2=Class2.Init;

看上去没什么特别的,是啊,根据我上面的说法,这仅仅只是在传递引用。所以实例计数器

始终是一,因为,我说了,是在程序的一开始,就完成了配置。那么下面的这几句,就是最好

的说明:

                        //传递引用并未实例新对象,因此实例计数器依然是1
                        Class3 c3=new Class3();
   Class3 c4=c3;
   c4.refDis();

                        //分配了新的实例一次,实例计数器的值加1。也就是2
   Class3 c5=new Class3();
   c5.refDis();

一切都和想象中的一样。我想,这就是生活。尽情享受,毫无疑问,这是对的。那么下回再见
(完)

解锁C#性能监控:内置性能计数器全解析 性能计数器是衡量和监控应用程序性能的重要工具。在C#中,.NET框架提供了一套完整的性能计数器类库,使得开发者能够轻松地收集和分析应用程序的运行时数据。本文将详细介绍如何在C#中使用内置的性能计数器,包括性能计数器的分类、如何创建自定义性能计数器、以及如何读取和监控系统和应用程序的性能数据。性能计数器用于测量和监控应用程序或操作系统的性能指标,如CPU使用率、内存使用情况、磁盘I/O等。讲解如何创建自定义的性能计数器类别和实例,以及如何在应用程序中使用它们。 阅读详情

相关推荐

基于74HC74与74HC86的同步模4可逆计数器实战

数字电路中的时序逻辑和组合逻辑是两大核心,而计数器是最经典的实践载体之一。通过理解D触发器的存储特性和异或门的可控反相原理,可以设计出同步模4可逆计数器。这种计数器在同步时钟控制下实现加/减计数,避免了异步计数器常见的毛刺问题,具有输出时序稳定、逻辑清晰等优点,广泛用于数字仪表、自动控制等领域。本文以74HC74双D触发器和74HC86四异或门为核心,详细讲解从状态方程推导到面包板搭建的完整过程,为数字电路入门提供直观的工程参考。

weixin_34087307的博客 382

引用计数

浅拷贝下的对象资源回收: 每次对象被析构后,引用计数减一; 只有当引用计数为0时才允许进行内存释放,大于0时不执行内存释放操作; 引用计数需要定义为指针变量,为了在不同对象之间传递,该指针由最后一个对象释放。

Kelvin_Yan的专栏 959

不止是显示:用TM1637模块做个简易计数器,附Arduino和STM32代码

本文详细介绍了如何使用TM1637驱动芯片和数码管构建简易计数器,提供Arduino和STM32的实战代码。从硬件连接到功能实现,涵盖加/减计数、亮度调节等核心功能,适合电子爱好者和开发者快速上手。

weixin_30411239的博客 387

C#多线程 - Timer计数器

C#中的三种Timer计数器 原文链接:https://blog.youkuaiyun.com/u011966339/article/details/79551437 在.NET中有三种计时器: 1、System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet。Timer控件只有绑定了Tick事件和设置Enabled=True后才会自动计时,停止计时可以用Stop()方法控制,通过Stop()停止之后,如果想重新计时,可以用Start()方法来启动计时器。Timer控件和它.

道可盗经常盗 2661

深入解析C# IServiceCollection:从单例模式到服务生命周期的全面指南

本文深入解析C#中的IServiceCollection与依赖注入机制,详细阐述了单例、作用域和瞬时三种服务生命周期的核心区别、适用场景及实战选择。通过具体代码示例,指导开发者避免常见陷阱,并提供了在ASP.NET Core与控制台应用中配置依赖注入的最佳实践,帮助构建可维护、高性能的应用程序。

weixin_29256771的博客 197

Unity Lua热更新开发核心:数据类型、元表、闭包与C#交互详解

在游戏开发领域,热更新技术是保障应用灵活迭代的关键。Lua作为一门轻量级、高性能的脚本语言,因其易于嵌入和高效的执行特性,成为Unity等游戏引擎中实现热更新的主流方案。其核心设计哲学“一切皆表”通过table数据结构统一了数组、字典和对象,而元表机制则赋予了table面向对象、操作符重载等高级能力,这构成了Lua灵活性的基石。理解闭包与作用域,是掌握Lua函数式编程和状态封装的核心,对于实现事件回调、迭代器等模式至关重要。在Unity项目中,Lua与C#的高效、稳定交互是技术价值的集中体现,涉及类型系统映

weixin_30480075的博客 345

对象引用 计数 原理

C++ 模拟对象引用计数

fysy0000的专栏 1076

C#后端实现大文件SM4分块加密上传的工程实践

在数据传输安全领域,分组加密算法是保障数据机密性的核心技术。其原理是将数据划分为固定长度的分组,通过密钥和特定工作模式进行迭代加密。SM4作为我国商用密码标准算法,在政务、金融等强监管场景中具有重要技术价值。当应用于大文件传输场景时,直接加密会面临内存溢出的挑战,需结合流式处理思想。本文聚焦CBC工作模式下的SM4算法,深入剖析其链式初始化向量(IV)依赖特性,并针对**大文件上传**与**分块加密**的工程整合,给出了C#后端基于BouncyCastle库的完整解决方案,涵盖密钥管理、错误恢复及性能优化等

B1334628598的博客 346

由实例计数器引出(C#) (转)

由实例计数器引出(C#) (转)[@more@]由实例计数器引出(C#) 好久没发表文章了,说也有趣,突然感觉C#中的有些类,为什么,其构造器是不可见的? 而且通常这些类在一个程序中往往只有一个实例存在。于是,我做了个实验结...

csd3176的博客 103

喷码机串口通信协议实例:Markem 9410/9450对接PLC与MES

串口通信是工业设备互联的基石,通过RS232/RS485等物理链路,设备以特定帧格式交换数据。掌握帧结构、校验算法与波特率配置,是上位机、PLC与现场设备高效对话的前提。在产线自动化中,喷码机与MES或PLC的集成常因协议文档缺失而受阻。本文以Markem 9410/9450系列喷码机为对象,梳理从DB9接线、串口参数设置到打印命令构造的完整流程,并详解实例代码中的异或校验、帧封装与响应解析方法。针对无应答、中文乱码、重启丢连接、电磁干扰等高频问题,提供可落地的排查步骤与加固方案。无论你是上位机工程师还是设

weixin_29168393的博客 132

C#高精度毫秒定时器:突破Windows定时器精度限制的实现方案

在Windows桌面开发中,定时器精度常受限于系统默认的15.6ms时钟周期,导致Thread.Sleep(1)实际延迟远超预期,而普通Timer也存在类似抖动。高精度定时器的实现关键在于调整系统时钟粒度:通过timeBeginPeriod将全局定时器分辨率提升至1ms,并利用Stopwatch读取高精度性能计数器(QPC)作为时间基准,再结合Sleep让出CPU与自旋补偿亚毫秒误差,最终将触发误差稳定在1ms级别。这种方案适用于数据采集、动画帧控、串口轮询等对时序敏感但又不愿引入重量级组件的场景。本文基于

weixin_30846347的博客 325

23.线程系列- 高并发中计数器的实现方式

本文主要内容 4中方式实现计数器功能,对比其性能 介绍LongAdder 介绍LongAccumulator 需求:一个jvm中实现一个计数器功能,保证多线程情况下数据正确性 我们来模拟50个线程,每个线程对计数器递增100万次,最终结果应该是5000万 我们使用4中方式实现,看一下其性能,然后引出为什么需要使用LongAdder,LongAccumulator。 方式1:synchronized方式实现 public class Demo1 { static int count =

qq_32062699的博客 465

c# 计数器程序

C#是微软公司发布的一种面向对象的、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。

C#泛型类的static字段陷阱:每个封闭类型各有一份

静态字段在普通类中全局唯一,但在C#泛型类中,每个封闭类型(如Repository<int>和Repository<string>)却各自维护独立的副本。这一现象源于CLR的泛型实例化策略:泛型类定义在运行时按类型参数构造具体类型,static字段随每个构造类型分配存储空间,并非共享全局状态。理解这一底层机制,能有效规避计数器失效、单例变多例、缓存数据不命中等高发问题。在工程实践中,若需要按类型隔离元数据或维护事件总线,泛型static字段反而适用;若追求真正的全局共享,则应改用非泛型辅助类或Concurr

weixin_31309419的博客 274

使用单例模式实现计数器

C#中, 使用单例模式设计计数器

控制障碍函数(Control Barrier Function,CBF) 二、示例

使用一个经典简单的示例讲解CBF的推导

Lyajpunov的博客 6433

C#面试宝典:高频考点与实战解析

在软件开发领域,C#作为.NET生态的核心语言,其类型系统与内存管理机制是面试必考基础。值类型与引用类型的栈堆分配差异直接影响程序性能,特别是在涉及装箱拆箱操作时会产生20倍以上的性能损耗。面向对象编程中的多态特性通过虚方法表实现,正确理解override与new关键字对方法表布局的影响,是处理复杂继承关系的关键。在并发编程场景下,lock同步机制基于Monitor实现,而async/await的上下文同步可能引发死锁问题。现代C#开发中,Span<T>和Memory<T>通过减少内存分配显著提升性能,这些

weixin_33979203的博客 465

工业级RFID读写器|识读器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯实例方案

本文以工业级RFID读写器CK-LR08-E00和汇川PLC控制器H5U是实例介绍工业级RFID读写器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯方案。

华翔天诚科技 4372

C#定时器重入问题与防重入锁实现方案

在并发编程中,定时器重入是常见的技术挑战,特别是当定时器间隔小于事件处理耗时,会导致事件重叠执行。这种现象在C#的System.Timers.Timer和System.Threading.Timer中尤为常见,可能引发共享资源访问冲突和数据竞争问题。理解线程安全机制如锁(lock)、标志位(volatile bool)和定时器自停止等技术原理,对构建健壮的定时任务至关重要。这些方案不仅能解决重入问题,还能优化性能,适用于数据同步、缓存刷新等实际应用场景。通过合理使用Monitor.TryEnter、Sema

weixin_31309419的博客 288

基于STM32设计的环境检测系统(OneNet)_365

本项目设计并实现了一种基于STM32F103RCT6单片机的环境检测系统,系统集成了多种传感器模块,具备对环境温湿度、烟雾浓度、易燃气体浓度、一氧化碳浓度和整体空气质量的实时检测功能。系统通过1.44寸SPI接口LCD实现本地数据显示,同时配备有源蜂鸣器用于环境异常报警。在数据通信方面,系统利用ESP8266-WIFI模块,采用MQTT协议将各类传感器数据上传至OneNet云平台,并借助其可视化框架实现网页端可视化界面,可通过电脑和手机浏览器远程访问,实现环境数据的远程监控。该系统设计结构简单、功能全面,适

2196

电机驱动和电源等大电流设计中的并联 MOSFET设计

在电机驱动等应用中,半桥拓扑(通常为 3 相)用于生成在电机中产生正扭矩或负扭矩的交流电源信号。想要更高的输出电流能力,只有通过并联形成每个功能开关的 MOSFET,才能实现高输出电流。当多个功率 MOSFET 并联以增加系统整体电流能力容量时,通常假设电流在并联器件之间均等分配或均等共享。然而,在并联 MOSFET 时,需要考虑并联器件之间的电流分配。PCB 布局的若干特性和特定的MOSFET 参数会影响这种分配,并在参数不匹配或布局不对称时导致均流不平衡。

小幽余生不加糖 2487

C# 温故而知新: 线程篇(三)

C# 温故而知新: 线程篇(三) 线程同步篇 (上) 线程同步中的一些重要概念 临界区(共享区)的概念 基元用户模式 基元内核模式 原子性操作 非阻止同步 阻止同步 详解Thread类 中的VolatileRead和VolatileWrite方法和Volatile关键字的作用 Volatile关键字的作用 介绍下I...

weixin_30559481的博客 65

华为OD新系统机试真题 2026.5.10 - 美观的灯笼

华为OD新系统机试真题【美观的灯笼】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【美观的灯笼】

qq_45776114的博客 643
上一篇: 不用VC中的Document能否存储数据
下一篇: JavaScript 基础教程
yarshray
博客等级 码龄25年 72粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值