Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何显式键入静态变量,而不是隐式键入(var)?_C#_Asp.net_Static_Implicit_Explicit - Fatal编程技术网

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

C# 如何显式键入静态变量,而不是隐式键入(var)?,c#,asp.net,static,implicit,explicit,C#,Asp.net,Static,Implicit,Explicit,当前我隐式键入了eventOperation: var eventOperation=EventOperations.Cancel 但我显式地键入eventOperation,这样就不必在if语句之前指定任意值。另外,我不能在if语句中初始化变量,也不能使用未初始化的隐式类型变量 以下是我对静态类的定义: public static class EventOperations { ... public static OperationAuthorizationRequiremen

当前我隐式键入了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";
    ...
}

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

OperationAuthorizationRequirement eventOperation = EventOperations.Cancel;

另一种办法是:

var eventOperation = null as EventOperations;
这样,您仍然可以使用var(隐式)声明变量,但在右侧指定数据类型,以便编译器能够找到它

更新 您的原始帖子暗示了
静态
变量声明。我不确定你在这里是否正确使用了这个词,但是如果你这样做了,情况会稍微改变

由于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.
        }
    }
}

但是我显式地键入eventOperation,这样我就不必在if语句之前分配任意值。
请给出一个您正在尝试构建的if语句的示例。不清楚您的问题到底是什么。请指定。我不确定是否能回答这个问题,但var只是针对您分配的数据类型自动进行类型声明。我想。。。只要使用VisualStudio工具来确定您使用的是哪种数据就行了。只是我拼错了它,它给了我一个名称空间错误,没有给我一个适当的修复,所以我认为它是另外一回事。谢谢