首页 > 编程语言 >C#泛型约束,多线程

C#泛型约束,多线程

时间:2022-10-28 14:46:17浏览次数:45  
标签:Thread 获取 C# 类型 线程 泛型 参数 多线程 where

定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的几种类型施加限制。 如果客户端代码尝试使用约束所不允许的类型来实例化类,则会产生编译时错误。 这些限制称为约束。 通过使用 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

相关文章

  • C语言笔记 | C与汇编
    函数通过栈传递参数平衡栈(函数调用约定)cdecl参数从右至左入栈调用者清栈stdcall参数从右至左入栈自身清栈fastcall:ecx和edx传前两个参数,剩下的参......
  • c# - mono - 调用 python 脚本 .py 文件
    c#-mono-调用python脚本.py文件一、定义命令行工具:在windows下是cmd.exe,在mac下使用bash。二、踩过的坑使用Process类,启动一个“命令行工具”,在通过向标准......
  • sqlite3-windows 备份脚本 backup.bat
    sqlite3-windows备份脚本backup.bat 注:其中sqlite3、gzip需要手动下载,放到db目录,下载地址:   sqlite3.exehttps://www.sqlite.org/cli.html   gzip.exeht......
  • c# - Mvc动态注册HttpModule实例
    c#-Mvc动态注册HttpModule实例再也不容为了兼容iis6、7、8、9、10了  -_-!!!!。不用配置web.config 的   <httpModules> or <modules>节点了!!!Microsoft.W......
  • 直播app开发,Vue动态设置样式和class名
    直播app开发,Vue动态设置样式和class名一、动态设置样式 <template><div:style="{backgroundImage:'url('+bgimg+')',fontSize:'size'}"></div></template><scri......
  • idea - mac idea 无法在 project 导入或添加 module
    idea-macidea无法在project导入或添加module解决方法:本地hosts映射导致,注释掉一下localhost的映射,重试0.0.0.0localhost127.0.0.1localhost255.255.255.255lo......
  • 算法-c#-基于朴素贝叶斯+词频向量空间模型的文本分类实现
    算法-c#-基于朴素贝叶斯+词频向量空间模型的文本分类实现一、朴素贝叶斯分类:公式:P(C|X)=P(X|C)P(C)/P(X)其中:P(C|X):后验概率P(X|C):似然概率(条......
  • plus.push.getClientInfo()
    https://blog.csdn.net/qq_39410252/article/details/116053737https://blog.csdn.net/u011200562/article/details/118091156......
  • 算法-c#-朴素贝叶斯算法在文本分类中的应用
    算法-c#-朴素贝叶斯算法在文本分类中的应用一、朴素贝叶斯分类:公式:P(C|X)=P(X|C)P(C)/P(X)其中:P(C|X):后验概率P(X|C):似然概率(条件概率)P(C):先......
  • CH9141——进阶应用篇
    在基础篇中主要将的是主从连接透传数据,这也是CH9141模块的主要功能,这边呢就主要讲讲除了透传之外的功能,如通用GPIO,ADC采集功能,串口配置功能。这些功能均有两种实现方式,一......