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