C#常用关键字 收藏集

out

  • 作为参数修饰符,它允许按引用而不是按值向方法传递参数。
  • 接口和委托的泛型类型参数声明中,该声明指定类型参数为协变。
public void Main()
    {
        double radiusValue = 3.92781;
        //计算圆的周长和面积,并将结果返回给 Main().
        CalculateCircumferenceAndArea(radiusValue, out double circumferenceResult, out areaResult);
        System.Console.WriteLine($"半径为的圆的周长 {radiusValue} is {circumferenceResult}.");

        System.Console.WriteLine($"圆的半径是 {radiusValue} is {areaResult}.");
        Console.ReadLine();
    }


    //计算方法
    public static void CalculateCircumferenceAndArea(double radius, out double circumference, out double area)
    {
        circumference = 2 * Math.PI * radius;
        area = Math.PI * (radius * radius);
    }

ref

  • 在方法签名和方法调用中,通过引用将参数传递给方法。
  • 在方法签名中,按引用将值返回给调用方。
  • gts.mc.TJogPrm jog;
    
    gts.mc.GT_SetJogPrm(ref jog);
    

    struct 

  • 结构类型(“structure type”或“struct type”)是一种可封装数据和相关功能的值类型 。
  • public struct Coords
    {
        public Coords(double x, double y)
        {
            X = x;
            Y = y;
        }
    
        public double X { get; }
        public double Y { get; }
    
        public override string ToString() => $"({X}, {Y})";
    }
    
    //===================================================================================
    //===================================================================================
    
    public struct TTrapPrm
    {
      public double acc;
      public double dec;
    }
    
    
    public void PTPCard(TTrapPrm trapPrm)
    {
      trapPrm.acc = 0.5;
      trapPrm.dec = 0.5;
    }

    volatile

  • 可以由多个同时执行的线程修改,取消Release对底层的优化问题,在读写时候,都是直接从内存中取(相识于一种锁机制)
  •         /*      将 volatile 修饰符添加到 _shouldStop 的声明后,
    将始终获得相同的结果(类似于前面代码中显示的片段)。 
                    但是,如果 _shouldStop 成员上没有该修饰符,
    则行为是不可预测的。 DoWork 方法可能会优化成员访问,从而导致读取陈旧数据。 */
    
            private  volatile bool _shouldStop;  
            private void button23_Click(object sender, EventArgs e)
            {
                Thread workerThread = new Thread(DoWork);
                workerThread.Start();
                Console.WriteLine("【1】床前明月光");
    
                while (!workerThread.IsAlive)//获取指示当前线程的执行状态的值。
                    ;
                Thread.Sleep(500);
    
                RequestStop();
    
                workerThread.Join();
                Console.WriteLine("【2】地上鞋两双");
                            
            }
    
            public void DoWork()
            {
                bool work = false;
                while (!_shouldStop)
                {
                    work = !work; 
                }
                Console.WriteLine("【3】举头望明月");
            }
            public void RequestStop()
            {
                _shouldStop = true;
            }
            //Release环境:
    
            //无关键字效果
            //【1】床前明月光
            //界面直接卡顿
    
            //volatile效果:
            //【1】床前明月光
            //【3】举头望明月
            //【2】地上鞋两双

    Partial

  • 亦称“分部类型”,定义要拆分到多个文件中的类、结构、接口或记录。
  •     /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
        }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值