C#__基本特性和使用

news2024/11/24 4:08:50

        // 特性(attribute):
        // 一种允许我们向程序集添加元数据的语言结构
        // 用于保存程序结构信息的某种特殊类型的类
        // 类似“批注”,用于解释说明

#define IsShowMessage // 宏定义,在开头定义,用于调用Conditional

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;


namespace AttributeUser
{
    class Program
    {
        public static object UseInfoA { get; private set; }

        // 特性(attribute):
        // 一种允许我们向程序集添加元数据的语言结构
        // 用于保存程序结构信息的某种特殊类型的类
        // 类似“批注”,用于解释说明

        // Obsolete(弃用)特性
        // true 如果使用过时的元素将生成编译器错误; false 如果使用它将生成编译器警告,能编译。
        [Obsolete("这个方法已弃用,请使用最新的NewTest", false)] // 默认为false
        static void OldTest()
        {
            Console.WriteLine("OldFuction");
        }
        static void NewTest()
        {
            Console.WriteLine("NewFuction");
        }

        // Conditional(条件)特性
        [Conditional("IsShowMessage")] // 用于控制ShowMessage函数,显示信息,方便观察程序段的执行
        static void ShowMessage(string str) 
        {
            Console.WriteLine(str);
        }

        // DebuggerStepThrough特性
        [DebuggerStepThrough] // 跳过调试直接执行
        // (字符串信息,调用者行号,文件路径,类成员名称)
        static void ShowMessage2(string message,[CallerLineNumber]int LineNumber =0,[CallerFilePath]string filePath = "", [CallerMemberName]string memberName= "")
        {
            Console.WriteLine(message);
            Console.WriteLine(LineNumber); 
            Console.WriteLine(filePath); 
            Console.WriteLine(memberName); 
        }

        static void Main(string[] args)
        {
            // 如果没有宏定义IsShowmessage,则不会输出打印Start of Mian……
            ShowMessage("Start of Mian……"); // Start of Mian……

            OldTest(); // OldFuction
            //警告 CS0618	“Program.OldTest()”已过时:“这个方法已弃用,请使用最新的NewTest”	
            
            NewTest(); // NewFuction

            // 如果没有宏定义IsShowmessage,则不会输出打印End of Mian……
            ShowMessage("End of Mian……"); // End of Mian……

            ShowMessage2("Huppy is cute.");
            /*
            // Huppy is cute.
            // 65
            // D:\C#编程\ConsoleApp1\Program.cs
            // Main
            */
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/892526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python面向对象植物大战僵尸

先来一波效果图 来看看如何设计游戏架构 import sysimport pygameclass BaseSprite(pygame.sprite.Sprite):def __init__(self, name):super().__init__()self.image pygame.image.load(name)self.rect self.image.get_rect()class AnimateSprite(BaseSprite):def __init__(…

ARM体系结构学习笔记:PC寄存器

PC寄存器 32位thumb也是采用三级流水线结构,但是每个指令位2个字节因此4thumb模式读PC寄存器 mov r0, pc ; thumb mode r0 pc 4LDR R1, (aLd - 0xAC3B62C) ADD R1, PC ; "%ld\n"thumb模式使用LDR使用PC进行间接寻址 如…

jvs-logic(逻辑引擎)的产生背景和使用场景作用

逻辑引擎的由来 要了解逻辑引擎的产生背景,我们需要了解程序执行的基本原理,那么编译是少不了的,编译是将高级语言翻译成为机器可以执行的机器语言 。我们在做日常开发过程中,把通用的业务逻辑通过高级语言写出来后,需…

2022年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:数组逆序重放 将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。 输入 输入为两行:第一行数组中元素的个数n(1 输出 输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔…

87-基于stm32单片机粮仓仓库环境温湿度烟雾监测报警系统Proteus仿真+源码

资料编号:087 一:功能介绍: 1、采用stm32单片机OLED显示屏烟雾浓度检测DHT11温湿度电机按键蜂鸣器,制作一个温湿度采集、烟雾浓度采集,OLED显示相关数据, 2、通过按键设置温度上限、烟雾浓度上限&#xff0…

逻辑漏洞合集

0x01 未授权 未授权问题为普通用户登录或没有登录后,拼接js接口,构造报文,越权实现管理员的权限操作。原因:后端没有校验Cookie/Session的身份信息,以至于普通用户的权限可以实现管理员权限的功能。 First webpack打…

dll修复精灵怎么下载,vcruntime140.dll丢失该如何修复

vcruntime140.dll是Microsoft Visual C Redistributable中的一个动态链接库(DLL)文件。它是一种运行时库(Runtime Library),用于支持使用Microsoft Visual C编写的程序的正常运行。作为一个DLL文件,vcrunti…

ModStartCMS v7.0.0 多语言开发优化,多个常用组件升级

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

超越传统测试方法:掌握最新的测试技术和工具

随着科技的不断进步和软件行业的快速发展,传统的测试方法已经无法满足现代软件开发的需求。为了提高测试的效率和准确性,测试人员需要及时掌握最新的测试技术和工具。本文将探讨一些创新的测试技术和工具,帮助测试人员超越传统的测试方法。 首…

Visual Studio 配置远程调试

1.在Visual Studio安装目录中找到远程调试工具(msvsmon.exe)。 2.将x64文件夹压缩成压缩包,然后拷贝到客户机 3.将pdb文件拷贝到客户机上版本对应的文件夹中。 4. 启动Visual Studio开始进行远程调试 选择“调试”> “附加到进程”

p-级数的上界(Upper bound of p-series)

积分判别法-The Integral Test https://math.stackexchange.com/questions/2858067/upper-bound-of-p-series https://courses.lumenlearning.com/calculus2/chapter/the-p-series-and-estimating-series-value/ 两个重要级数(p级数和几何级数) ht…

探索OLED透明屏方案的设计与应用

OLED透明屏作为一种新兴的显示技术,正逐渐在商业展示、新媒体互动和智能家居等领域展现出广阔的应用前景。 在这篇文章中,尼伽将深入探讨OLED透明屏方案的设计和应用,展示其在提升用户体验和创造商业价值方面的优势。 一、OLED透明屏方案的设…

web前端tips:js继承——组合继承

上篇文章给大家分享了 js继承中的借用构造函数继承 web前端tips:js继承——借用构造函数继承 在借用构造函数继承中,我提到了它的缺点 无法继承父类原型链上的方法和属性,只能继承父类构造函数中的属性和方法 父类的方法无法复用&#xff0…

UE Json Operate 解析嵌套数组

演示如何使用 DTJsonOperate 插件,在蓝图中解析嵌套数组。 比如这个Json {"name": [[[1, 2]],[3, 4],[5, 6]] } 操作演示 最后打印 本功能需要插件支持,插件下载地址。

2023牛客多校第二场 G Link with Centrally Symmetric String(类马拉车)

2023牛客多校第二场 G Link with Centrally Symmetric Strings(类马拉车 最长回文后缀) 题目链接 大意:定义对称回文的回文中心可以是 间隔(偶回文中心) 或者 o / x / s / z (奇回文中心) 五种 , 定义匹配为 b/q d/p n/u o/o x/x s/s z/z 之间相互匹…

nvm安装使用与常见问题

前言 nvm是一个用来进行nodejs多个版本管理和切换的工具。这个工具的使用相当简单和方便,但是没想到我使用的时候却遇到了好些问题,这里记录一下顺便分享。 安装nvm 先去下载地址Releases coreybutler/nvm-windows GitHub下载,建议选择下…

批量记录收支明细,轻松通过收支占比图表轻松分析支出项目占比!

您是否希望更加直观地了解个人或企业的支出项目占比情况?是否想通过图表分析,快速定位支出的主要项目,并做出相应的调整?现在,我们的智能收支分析大师为您提供了一种智能化的解决方案!只需几步操作&#xf…

sliver C2 切换会话

使用中发现会话的切换直接输入sessions,显示会话 use 切换到新会话 在测试进程迁移的时候发现命令不好用 多次尝试,没有成功的

骨传导耳机戴久了头疼正常吗?骨传导耳机对健康有影响吗

骨传导耳机戴久了头疼正常吗?骨传导耳机对健康有影响吗 长时间佩戴骨传导耳机可能会引起一些人头疼的不适感,这可能是因为长时间的接触和震动影响了你的感知和舒适度。如果你遇到这样的问题,可以尝试以下几种解决方法: ⑴适当休…

第6章:支持向量机

间隔与支持向量 w为法向量,决定的是超平面的方向。b是偏移项,决定了超平面与原点之间的距离。 为什么最大化间隔,得到的就是最优平面呢? 当超平面没有正确划分正负样本时,几何间隔为负数。几何间隔,各个…