91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么用戶定義的轉換必須是轉換成封閉類型或從封閉類型轉換

發布時間:2021-10-12 11:17:21 來源:億速云 閱讀:154 作者:iii 欄目:編程語言

這篇文章主要介紹“為什么用戶定義的轉換必須是轉換成封閉類型或從封閉類型轉換”,在日常操作中,相信很多人在為什么用戶定義的轉換必須是轉換成封閉類型或從封閉類型轉換問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”為什么用戶定義的轉換必須是轉換成封閉類型或從封閉類型轉換”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

在做類型隱式轉換的時候碰到這一報錯信息“用戶定義的轉換必須是轉換成封閉類型,或者從封閉類型轉換”:

聲明大致如下:

有2個類:A、B,其中類A和類B結構完全相同,只是類B屬于第三方;

在類C的某一個方法中需要返回一個List<A>,如:

public List<A> Func(){
       List<B> list = new List<B>;
       .....       return list;
}

這個時候因為返回類型不同而會報錯;

在類A中進行隱式轉換

class A{
      ....      public static implicit operator List<A>(List<B> value)
      {
              ...
      }
      .....
}

這個時候會報“用戶定義的轉換必須是轉換成封閉類型,或者從封閉類型轉換”的錯誤;
查閱MSDN,在類型轉換一節中有這么2句說明:
1.操作數必須是封閉類型
2.類A到類B的類型轉換定義不能在類C中進行(即2個類的轉換不能在第3個類中定義)
一開始一直認為是第一點的原因造成的編譯錯誤,也誤認為所謂的封閉類型,就一定要是類/結構,不能是集合對象,后來發現造成這一錯誤的原因是第二點,因為當我將類型轉換的定義更改為:

class A{
      ....      public static implicit operator A(List<B> value)  {
              ...
      }
      .....
}


此時編譯通過,也就排除了第一點;
原來對于編譯器來說,class A是一個類型,List<A>也是一個類型,List<B>亦是一個類型,那么對于List<B>類型隱式轉換為List<A>類型的操作自然不能在class A中進行,符合第二點;


補充:
如果要在項目中,有方法:

public List<A> Func(){
       List<B> list = new List<B>;
       .....       return list;
}


非要讓這個list轉換成List<A>怎么做?
其實方法也很簡單,既然List<T>的隱式轉換不能做,那么在返回的時候將list中的元素逐個轉換即可:
隱式轉換定義:

class A{
      ....      public static implicit operator A(B value)  {
              ...
      }
      .....
}


方法定義:

public List<A> Func(){
       List<B> list = new List<B>;
       .....       return list.Select(p=>(B)p).ToList();
}

到此,關于“為什么用戶定義的轉換必須是轉換成封閉類型或從封閉類型轉換”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂尔多斯市| 崇仁县| 兴海县| 汝南县| 天峨县| 桓仁| 江北区| 丰县| 重庆市| 青阳县| 云阳县| 瓦房店市| 漯河市| 陇川县| 长武县| 彰化市| 阿克| 双江| 贵定县| 安仁县| 中方县| 砀山县| 昌图县| 油尖旺区| 西乡县| 桂平市| 瑞安市| 邯郸市| 西乌| 登封市| 白山市| 太白县| 定陶县| 昌都县| 嘉定区| 南宁市| 宁武县| 吉安县| 开江县| 屏东市| 克什克腾旗|