1. <legend id='UF3rV'><style id='UF3rV'><dir id='UF3rV'><q id='UF3rV'></q></dir></style></legend>
      <tfoot id='UF3rV'></tfoot>

      <small id='UF3rV'></small><noframes id='UF3rV'>

        • <bdo id='UF3rV'></bdo><ul id='UF3rV'></ul>

        <i id='UF3rV'><tr id='UF3rV'><dt id='UF3rV'><q id='UF3rV'><span id='UF3rV'><b id='UF3rV'><form id='UF3rV'><ins id='UF3rV'></ins><ul id='UF3rV'></ul><sub id='UF3rV'></sub></form><legend id='UF3rV'></legend><bdo id='UF3rV'><pre id='UF3rV'><center id='UF3rV'></center></pre></bdo></b><th id='UF3rV'></th></span></q></dt></tr></i><div id='UF3rV'><tfoot id='UF3rV'></tfoot><dl id='UF3rV'><fieldset id='UF3rV'></fieldset></dl></div>

        C# 泛型不允许委托类型约束

        时间:2023-11-11
          <tbody id='JdebW'></tbody>

        • <bdo id='JdebW'></bdo><ul id='JdebW'></ul>

          <small id='JdebW'></small><noframes id='JdebW'>

          1. <legend id='JdebW'><style id='JdebW'><dir id='JdebW'><q id='JdebW'></q></dir></style></legend>

              <i id='JdebW'><tr id='JdebW'><dt id='JdebW'><q id='JdebW'><span id='JdebW'><b id='JdebW'><form id='JdebW'><ins id='JdebW'></ins><ul id='JdebW'></ul><sub id='JdebW'></sub></form><legend id='JdebW'></legend><bdo id='JdebW'><pre id='JdebW'><center id='JdebW'></center></pre></bdo></b><th id='JdebW'></th></span></q></dt></tr></i><div id='JdebW'><tfoot id='JdebW'></tfoot><dl id='JdebW'><fieldset id='JdebW'></fieldset></dl></div>
                <tfoot id='JdebW'></tfoot>
                • 本文介绍了C# 泛型不允许委托类型约束的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  是否可以在 C# 中定义一个类

                  Is it possible to define a class in C# such that

                  class GenericCollection<T> : SomeBaseCollection<T> where T : Delegate
                  

                  昨晚我无法在 .NET 3.5 中完成此任务.我尝试使用

                  I couldn't for the life of me accomplish this last night in .NET 3.5. I tried using

                  委托,委托,行动<T>和 Func<T,T>

                  在我看来,这在某种程度上应该是允许的.我正在尝试实现自己的 EventQueue.

                  It seems to me that this should be allowable in some way. I'm trying to implement my own EventQueue.

                  我最终只是做了这个[请注意原始近似].

                  I ended up just doing this [primitive approximation mind you].

                  internal delegate void DWork();
                  
                  class EventQueue {
                      private Queue<DWork> eventq;
                  }
                  

                  但是我失去了为不同类型的函数重用相同定义的能力.

                  But then I lose the ability to reuse the same definition for different types of functions.

                  想法?

                  推荐答案

                  许多类作为通用约束不可用 - Enum 是另一个.

                  A number of classes are unavailable as generic contraints - Enum being another.

                  对于委托,您可以获得的最接近的是:class",可能使用反射来检查(例如,在静态构造函数中)T 委托:

                  For delegates, the closest you can get is ": class", perhaps using reflection to check (for example, in the static constructor) that the T is a delegate:

                  static GenericCollection()
                  {
                      if (!typeof(T).IsSubclassOf(typeof(Delegate)))
                      {
                          throw new InvalidOperationException(typeof(T).Name + " is not a delegate type");
                      }
                  }
                  

                  这篇关于C# 泛型不允许委托类型约束的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:是否可以将委托作为属性参数? 下一篇:如何在 C# 中清除事件订阅?

                  相关文章

                  <i id='BUeOs'><tr id='BUeOs'><dt id='BUeOs'><q id='BUeOs'><span id='BUeOs'><b id='BUeOs'><form id='BUeOs'><ins id='BUeOs'></ins><ul id='BUeOs'></ul><sub id='BUeOs'></sub></form><legend id='BUeOs'></legend><bdo id='BUeOs'><pre id='BUeOs'><center id='BUeOs'></center></pre></bdo></b><th id='BUeOs'></th></span></q></dt></tr></i><div id='BUeOs'><tfoot id='BUeOs'></tfoot><dl id='BUeOs'><fieldset id='BUeOs'></fieldset></dl></div>
                • <legend id='BUeOs'><style id='BUeOs'><dir id='BUeOs'><q id='BUeOs'></q></dir></style></legend>
                  <tfoot id='BUeOs'></tfoot>

                    1. <small id='BUeOs'></small><noframes id='BUeOs'>

                        <bdo id='BUeOs'></bdo><ul id='BUeOs'></ul>