C# 如何显式键入静态变量,而不是隐式键入(var)?
当前我隐式键入了eventOperation: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
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工具来确定您使用的是哪种数据就行了。只是我拼错了它,它给了我一个名称空间错误,没有给我一个适当的修复,所以我认为它是另外一回事。谢谢