2016-03-18 80 views
0

我創建了一個類:在C#國家通用<T>

public class State<T> 
{ 
    private T state; 
    private double cost;  
    private State<T> cameFrom; 
    public State(T state) // CTOR 
    { 
     this.state = state; 
     cost = 0; 
     cameFrom = null; 
    } 

然後我打開的界面:

public interface ISearchable 
{ 
    State<T> getInitialState(); 
    State<T> getGoalState(); 
    List<State<T>> getAllPossibleStates(State<T> s); 
} 

它標誌着我在界面上出現以下錯誤: 類型或命名空間名稱'T'無法找到(您是否缺少使用指令或裝配參考?)

爲什麼?

我該如何解決?

+0

您必須使通用方法或通用接口爲'State getInitialState ();'或'public interface ISearchable '。 –

+0

謝謝! @ LasseV.Karlsen – ABC

回答

1

編譯器不知道如何解析接口方法中的類型T。你需要使其中的一個接口或方法的通用,以及:

public interface ISearchable<T> 

或者:

public interface ISearchable 
{ 
    State<T> GetInitialState<T>(); 
    State<T> GetGoalState<T>(); 
    List<State<T>> GetAllPossibleStates<T>(State<T> s); 
} 

順便說一句,在C#中的通常情況是使用初始大寫方法名稱。

+1

或者方法,但可能是接口。 –

+0

感謝您的幫助! – ABC