代碼中的Status和State語義

代碼中的Status和State語義

State:用於描述某個對象的整體狀態,是被描述對象的多個參數的載體,在將來,它將持久地承載這些參數,但這些參數的值可能改變。

例如:C#中 Begin/End 形式的異步方法中的 state 參數和 AsyncState 屬性:

public class Socket : IDisposable
{
    // ...
    public IAsyncResult BeginAccept(AsyncCallback callback, object state);
    // ...
}

public interface IAsyncResult
{
    // ...
    object AsyncState { get; }
    // ...
}

Status:用於描述某個可分爲多個階段的持續過程所處的階段,在將來,隨着階段的轉變,這一狀態可能會轉變爲其他狀態。

例如:C#中 System.Threading.Tasks.TaskStatus 屬性:

public class Task : IThreadPoolWorkItem, IAsyncResult, IDisposable
{
    // ...
    public TaskStatus Status { get; }
    // ...
}

public enum TaskStatus
{
    Created = 0,
    WaitingForActivation = 1,
    WaitingToRun = 2,
    Running = 3,
    WaitingForChildrenToComplete = 4,
    RanToCompletion = 5,
    Canceled = 6,
    Faulted = 7
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章