0

我在课堂上有以下访问器Glass

public bool isGlassEnabled{
    get {
         if (System.Environment.OSVersion.Version.Major >= 6) {
             DwmIsCompositionEnabled( ref en );
             if (en > 0) {
                return true;
             } else { return false; }
         } else { return false; }
    }
}

(我不确定代码是否有效,但这不是我感兴趣的)

现在我们位于MainClass. 有没有可能isGlassEnabled像这样访问:

bool myBool = **without new** Glass.isGlassEnabled;
4

4 回答 4

3

为了使这项工作

bool myBool = **without new** Glass.isGlassEnabled;

你只需要一个static属性:

public static bool isGlassEnabled{
    get { ... }
}

然后bool myBool = Glass.isGlassEnabled;将简单地编译。

您(可能)在吸气剂中需要的一切都是静态的,所以那里没有问题。

编辑:

正如其他人所指出的,您的代码包含一个en应该是本地或静态的变量。
连同一些其他分支折叠:

public static bool isGlassEnabled
{
    get 
    {
         if (System.Environment.OSVersion.Version.Major >= 6) 
         {
             Int32 en;   // or whatever type exactly needed
             DwmIsCompositionEnabled( ref en );
             if (en > 0) 
                return true;                
         }
         return false; 
    }
}
于 2012-10-07T18:09:56.083 回答
2

是的,您应该将属性标记为static

public static bool isGlassEnabled
于 2012-10-07T18:09:39.667 回答
2

使用静态修饰符

public static bool isGlassEnabled
于 2012-10-07T18:09:59.573 回答
1

使用静态属性:

public static bool isGlassEnabled{
    get {
        TypeTheTypeOfEnVariableHere en;
        if (System.Environment.OSVersion.Version.Major >= 6) {
             DwmIsCompositionEnabled( ref en );
            if (en > 0) {
               return true;
            } else { return false; }
        } else { return false; }
   }
}
于 2012-10-07T18:09:37.627 回答