代碼中的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.Task
的 Status
屬性:
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
}