我剛剛瞭解到,在C#中,您可以在技術上將數據存儲在接口中。看下面的例子。用這個例子接口和類:包含數據引用的接口
public interface IInterface
{
int id { get; set; }
}
public class ExampleClass : IInterface
{
public int id { get; set; }
}
和示例程序。
class Program
{
static void Main(string[] args)
{
var newExample = new exampleClass();
newExample.id = 5;
IInterface exInterface = newExample;
Console.WriteLine(exInterface.id);
Console.ReadLine();
}
}
我會得到5的輸出。爲什麼?我認爲接口沒有存儲結構以外的任何東西。這種間接存儲和引用是否有技術術語?這不是很糟糕,因爲這個功能是隱藏的嗎?我永遠不會想到引用一個接口上的屬性來檢索實際數據,這是一個對象的目的。
請讓我知道如果格式是錯誤的或我需要清除任何事情。謝謝!
該值在類中顯示出來,但是如果您有兩個類實現您的接口將會非常有用 – Boo
這兩個變量都引用了相同的內存。爲什麼你會期望同樣的內存包含兩個不同的值?賦值不會複製任何內容,只需將兩個引用設置爲相同的對象實例即可。 –
基本上你所做的所有事情都是將'ExampleClass'強制轉換爲接口。你檢索的值仍然來自'''''newExample''。接口提供了一個必須由類提供的契約,因此我們知道如果我們有一個'IInterface',它必須提供一個返回int的屬性'id'。沒有隱藏的功能,你只需調用由'object'實現的類接口。 –