【问题标题】:Instead of implicitly typing (var), how do I explicitly type static variables?我如何显式键入静态变量,而不是隐式键入 (var)?
【发布时间】:2023-03-27 23:29:01
【问题描述】:

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

【问题讨论】:

  • But I explicitly type eventOperation so that I don't have to assign an arbitrary value before an if statement. 请展示您尝试构建的 if 语句示例。
  • 目前还不清楚您的问题到底是什么。请说明。
  • 我不确定是否会得到这个问题,但 var 只是在您分配的数据类型方面自动进行类型声明。我猜...只需使用 Visual Studio 工具来确定您使用的是哪种数据?

标签: c# asp.net static implicit explicit


【解决方案1】:

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

OperationAuthorizationRequirement eventOperation = EventOperations.Cancel;

【讨论】:

  • 这行得通。只是我拼错了它,它给了我一个命名空间错误而没有给我一个适当的修复,所以我认为它是别的东西。谢谢!
【解决方案2】:

另一种方法是:

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

【讨论】:

    猜你喜欢
    • 2012-09-19
    • 2023-01-23
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    相关资源
    最近更新 更多