而不是隐式输入(var),如何显式键入静态变量?

时间:2017-08-31 10:07:15

标签: c# asp.net static implicit explicit

目前我隐式输入 eventOperation

var eventOperation = EventOperations.Cancel;

但我明确地输入 eventOperation ,这样我就不必在if语句之前分配任意值。另外,我无法在if语句中初始化变量或者使用未初始化的隐式类型变量。

这是我对静态类的定义:

public static class EventOperations
{
    ...
    public static OperationAuthorizationRequirement Cancel =
      new OperationAuthorizationRequirement { Name = Constants.CancelOperationName };
}

public class Constants
{
    ...
    public static readonly string CancelOperationName = "Cancel";
    ...
}

2 个答案:

答案 0 :(得分:3)

EventOperations.Cancel显然属于OperationAuthorizationRequirement类型。因此,只需将变量声明为

即可
OperationAuthorizationRequirement eventOperation = EventOperations.Cancel;

答案 1 :(得分:0)

另一种方法是:

var eventOperation = null as EventOperations;

这样你仍然可以使用var(隐式)声明你的变量,但是在右边指定数据类型,这样编译器就可以解决它。

更新

您的原始帖子暗示static变量声明。我不确定你是否正确使用这个术语,但如果你这样做,情况会略有改变......

由于C#不支持静态局部变量,因此需要在模块级别将变量声明为static,即不在方法内,而是直接在类中。

public class SomeClass 
{
    private static EventOperations eventOperation = null;

    void SomeMethod()
    {
        if(true)
        {
            eventOperation = EventOperations.Cancel; // whatever value you set here, it'll be propagated to all the instances of some class.
        }
    }
}