亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為接口定義數據類型類

為接口定義數據類型類

C#
瀟瀟雨雨 2021-10-23 17:00:52
C# 與 Java 不同,不允許在接口內定義類。定義僅在接口函數中使用的類的正確位置是什么?目前我正在使用以下架構namespace MyNameSpace{    public class MyReturnType     {        // Contents    }    public class MyArgsType     {        // Contents    }    public interface ICalibrationCheckController    {        MyReturnType PerformCalibrationCheck(MyArgsType arg);    }}但是這種架構需要為每個接口定義一個單獨的命名空間。否則,如果我在同一個命名空間中定義另一個接口,將很難區分第一個接口使用哪些類和另一個接口使用哪些類。理想情況下,我想在接口定義中定義必要的類,但這是不允許的。namespace MyNameSpace{    public interface ICalibrationCheckController    {        public class MyReturnType         {            // Contents        }        public class MyArgsType         {            // Contents        }        MyReturnType PerformCalibrationCheck(MyArgsType arg);    }}你使用什么方法,什么是正確的?
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

我看不出這里有很大的不同。在 JAVA 中,您必須提供接口的名稱來限定類,而在 C# 中,您將使用命名空間。事實上,JAVA 語法因此充當某種命名空間。因此,您真正節省的唯一事情是一些打字負擔得起的類型namespace MyNamespace。


話雖如此,你可以在 JAVA 中做到這一點:


interface MyInterface

{

    MyClass DoSomething();

    class MyClass { }

}

interface AnotherInterface

{

    MyClass DoSomething();

    class MyClass { }

}

在 C# 中,類似的方法是這樣的 - 正如您已經提到的:


namespace MyNamespace

{

    interface MyInterface { MyClass DoSomething(); };

    class MyClass { }

}

namespace AnotherNamespace

{

    interface AnotherInterface { MyClass DoSomething(); };

    class MyClass { }

}

在 JAVA 中使用類型如下:


MyInterface.MyClass m = interfaceInstance.DoSomething();

在 C# 中,以下內容是有效的:


MyNamespace.MyClass m = interfaceInstance.DoSomething();

在兩種語言中,您都必須限定類的完整名稱。在 C# 中,您是通過其命名空間執行此操作,而在 JAVA 中則是通過其接口(但它充當命名空間)來執行此操作。


所以實際上并沒有太大的區別,無論如何你必須提供命名空間/接口。我能看到的唯一區別是您需要輸入namespaceC# 和一些大括號。


查看完整回答
反對 回復 2021-10-23
  • 1 回答
  • 0 關注
  • 193 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號