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();
}
}