定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的几种类型施加限制。 如果客户端代码尝试使用约束所不允许的类型来实例化类,则会产生编译时错误。 这些限制称为约束。 通过使用 where 上下文关键字指定约束。 下表列出了六种类型的约束:
约束 描述
where T: struct 类型参数必须是值类型。 可以指定除 Nullable 以外的任何值类型。 有关详细信息,请参阅使用可以为 null 的类型。
where T : class 类型参数必须是引用类型;这同样适用于所有类、接口、委托或数组类型。
where T : new() 类型参数必须具有公共无参数构造函数。 与其他约束一起使用时,new() 约束必须最后指定。
where T :<基类名> 类型参数必须是指定的基类或派生自指定的基类。
where T :<接口名称> 类型参数必须是指定的接口或实现指定的接口。 可指定多个接口约束。 约束接口也可以是泛型。
where T : U 为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。
可以对同一类型参数应用多个约束,并且约束自身可以是泛型类型,如下所示:
class EmployeeList<T> where T : Employee, IEmployee, System.IComparable<T>, new()
{
// ...
}
C#是不允许关键字作为标识符(类名、变量名、方法名、表空间名等)使用的,但如果加上@之后就可以了
例如
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void @ static ( int @ int )
{
if (@ int > 0)
{
System.Console.WriteLine( "Positive Integer" );
}
else if (@ int == 0)
{
System.Console.WriteLine( "Zero" );
}
else
{
System.Console.WriteLine( "Negative Integer" );
}
}
c#多线程基础
System.Threading.thread类
Thread构造函数
名称 说明
Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。
Thread (ThreadStart) 初始化 Thread 类的新实例。
由 .NET Compact Framework 支持。
Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。
Thread (ThreadStart, Int32) 初始化 Thread 类的新实例,指定线程的最大堆栈大小。
由 .NET Compact Framework 支持。
ThreadStart和ParameterizedThreadStart委托的返回值都应该为void类型,ThreadStart定义为不带参数的委托,ParameterizedThreadStart定义为带参数的委托(方法参数的类型必须Object,只能有一个object参数),参数可以在最终调用Start()运行线程时传给该方法。
thread类的属性
名称 说明
ApartmentState 获取或设置此线程的单元状态。
CurrentContext 获取线程正在其中执行的当前上下文。
CurrentCulture 获取或设置当前线程的区域性。
CurrentPrincipal 获取或设置线程的当前负责人(对基于角色的安全性而言)。
CurrentThread 获取当前正在运行的线程。
CurrentUICulture 获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源。
ExecutionContext 获取一个 ExecutionContext 对象,该对象包含有关当前线程的各种上下文的信息。
IsAlive 获取一个值,该值指示当前线程的执行状态。
IsBackground 获取或设置一个值,该值指示某个线程是否为后台线程。
IsThreadPoolThread 获取一个值,该值指示线程是否属于托管线程池。
ManagedThreadId 获取当前托管线程的唯一标识符。
Name 获取或设置线程的名称。
Priority 获取或设置一个值,该值指示线程的调度优先级。
ThreadState 获取一个值,该值包含当前线程的状态。
thread类的部分方法;
Abort 已重载。 在调用此方法的线程上引发 ThreadAbortException,以开始终止此线程的过程。调用此方法通常会终止线程。
GetHashCode 已重写。 返回当前线程的哈希代码。
Join 已重载。 阻塞调用线程,直到某个线程终止时为止。
Interrupt 中断处于 WaitSleepJoin 线程状态的线程。
Resume 继续已挂起的线程。
Sleep 已重载。 将当前线程阻塞指定的毫秒数。
Suspend 挂起线程,或者如果线程已挂起,则不起作用。
Start 已重载。 使线程得以按计划执行。
标签:Thread,获取,C#,类型,线程,泛型,参数,多线程,where From: https://www.cnblogs.com/CS-ComputerScience/p/16836031.html