C#__基本特性和使用

// 特性(attribute):

// 一种允许我们向程序集添加元数据的语言结构

// 用于保存程序结构信息的某种特殊类型的类

// 类似"批注",用于解释说明

cs 复制代码
#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
            */
        }
    }
}
相关推荐
微学AI9 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
豆瓣鸡10 小时前
算法日记 - Day3
java·开发语言·算法
凯丨10 小时前
AI 蠕虫来了:恶意文档如何通过 Copilot for Word 自我传播?
人工智能·c#·copilot
韭菜炒鸡肝天10 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
Aaron - Wistron11 小时前
Web API C# (Furion版)带 单元测试
开发语言·后端·c#
Dxy123931021612 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
05664612 小时前
Python康复训练——常用标准库
开发语言·python·学习
骊城英雄13 小时前
基于C#+avalonia ui实现的跨平台点胶机灌胶监控控制上位机软件
开发语言·ui·c#
吾儿良辰13 小时前
一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
开发语言·windows·c#
哎呦喂我去去去13 小时前
C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)
linux·windows·c#