标签: static

设置静态属性C#时出现堆栈溢出异常

可能重复:
C#新手,为什么Property Set会抛出StackOverflow异常?

当我尝试设置静态属性时,我收到了堆栈溢出异常.

public static class StaticTest
{
   static string stringToSet
   {
      get
      {                
          return stringToSet;
      }
      set
      {
          stringToSet = value;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

然后,在其他课程中:

public void setStaticProperty()
{
    StaticTest.stringToSet = "Hello World";    // StackOverflow exception here
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

c# stack-overflow static properties set

-2
推荐指数
1
解决办法
754
查看次数

在另一个类中调用抽象类的静态方法

我有一个班级员工

import javax.swing.*;
public abstract  class Employee {
    public static void  searchEmp(int id) {
        JOptionPane.showMessageDialog(null, "done");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我有另一个班级考试:

public class `test` {
   public static void main(String args[]) {
     searchEmp(2);// here my programme give error
   }
}
Run Code Online (Sandbox Code Playgroud)

我想searchEmp()从类测试中调用哪个是Employee的一部分,但是它给出了一个错误.请建议没有继承的任何解决方案.

java inheritance static

-2
推荐指数
1
解决办法
1358
查看次数

在类中声明的静态变量,其类型与类的类型相同

我知道为什么这是C++中的错误.

class A
{
     A b;
};
int main() {}
Run Code Online (Sandbox Code Playgroud)

因为type of b is unresolved at the compile time.那么为什么下面的代码是正确的?

class A
{
     static A b;
}
int main() {}
Run Code Online (Sandbox Code Playgroud)

如果它是静态的,变量b的类型是否已被解析?

最后,令我惊讶的是以下代码适用于JAVA:

public class Main
{
Main g;
public static void main(String[] args)
{
    System.out.println("hi");
}
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我知道它们特定于类而不是实例的静态变量.但这并没有给出上述问题的答案......请给我一些启示.

c++ java static class

-2
推荐指数
2
解决办法
505
查看次数

为什么Java禁止打开静态枚举?

我必须使用一个定义这样的枚举的库:

public static enum LibVal {
    VAL_1,
    VAL_2,
    VAL_3;
}
Run Code Online (Sandbox Code Playgroud)

我把这个枚举作为一个方法参数:

public void libCallback(LibVal val){
    //.... some implementation
}
Run Code Online (Sandbox Code Playgroud)

为什么Java的禁止使用的switchLibVal内部枚举libCallback的方法?但是,如果lib已将其枚举声明为非静态,则可以使用.这是一个令人困惑的,因为这个SO答案说明,确实没有区别......

编辑:

正如bobkilla所述:我在我的交换机内尝试了LibVal.VAL_1,应该允许.我提供了一个不起作用的代码示例!

class TestClassForEnum {
    public static enum TestEnum{ ONE, TWO; }
}

class WhichUsesEnumInsideMethod{

    //completely unrelated to TestClassForEnum.TestEnum!!!
    public static final int ONE = 0x1282

    void doSomethingWithEnum(TestEnum e){
        //here I cannot switch:

        //FORBIDDEN BY JAVA
        switch (e) {
            case TestEnum.ONE:
                    //...

        }

        //Cannot USE EITHER, because ONE is a static final …
Run Code Online (Sandbox Code Playgroud)

java enums static switch-statement

-2
推荐指数
1
解决办法
306
查看次数

为什么使用"new"关键字,创建的对象是指同一个对象?

这些是我的课程:

namespace MyFirstGame
{
    public static class OstacoliManager
    {
        #region Dichiarazioni

        private static List<Ostacolo> ostacoli = new List<Ostacolo>();
        private static List<Ostacolo> oggettiSulloSchermo = new List<Ostacolo>();
        private static int objectCount = 20;
        private static Random rand = new Random();

        #endregion

        #region Metodi ausiliari

        public static void Inizializza()
        {
            oggettiSulloSchermo.Clear();
            for (int i = 0; i < objectCount; i++)
            {
                //Dalla lista degli ostacoli ne creo tot a caso. Lo faccio da ostacoli e non da texture per l'eventualità in cui abbiano …
Run Code Online (Sandbox Code Playgroud)

c# static

-2
推荐指数
1
解决办法
163
查看次数

ASP.NET C#中的静态变量更改值

我在使用C#的ASP.NET中有一个静态变量的问题.我在webform中声明变量.

public partial class Logueado_Movimientos : System.Web.UI.Page
{
   static List<ExchangeItems> theList;

   protected void Page_Load(object sender, EventArgs e)
   {
      if (IsPostback) return;
      theList = GetListValues();
   }
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.我们测试了网站,没有发现问题,部署了它......但是在生产环境中发生了一些奇怪的事情.这个网站每天都在使用,只有两次,情况已经发生.

ExchangeItems有一个ID属性,它返回数据库中每个要交换的项的id.页面加载时只调用一次GetListValues()方法.之后,用户可以通过单击GridView中的复选框选择要交换的项目,进行进一步的验证,然后有一个"打印并保存"按钮,使用iTextSharp打印到PDF并将状态发送回数据库.

在所有验证之后,该项目已在生产中更改两次.例如,项目180是正在交换的项目,但是当打印和保存文档时,结果是项目103是处理的项目.所有先前的验证都将ID设置为180.项目103甚至不在列表中.

现在,检查数据库(SQL Server),我们发现项目103在项目180后10分钟保存.我们使用GetDate()函数来存储日期和时间.此外,他们被两个不同的用户分配给不同的客户.

用户可能需要10分钟来处理请求,有时他们会与客户通话.这意味着user1正在使用项目180,而user2正在使用项目103,两者都使用相同的模块/ webform.由于变量是静态的,两个用户是否可能正在影响彼此的信息?我现在宣称它是"私人静态",只是出于偏执,但还有什么我不知道的吗?

注意:变量是静态的,因为如果没有声明,则回发会丢失它的值.它不在Session变量中,因为它仅用于该模块/ webform,而不是其他地方.

c# asp.net static webforms

-2
推荐指数
1
解决办法
1136
查看次数

如何判断某些对象不应该声明为静态?

我的规则是,在原语的情况下,我可以随时声明它们,static因为它们不会消耗太多内存.实际上,我通常使用static原语作为项目常量.

但是,我看到许多程序员也声明了对象static.显然,static对象会增加每个新static对象的内存消耗.

例如,我经常看到该sharedpreference对象被声明为static,因此任何类都可以通过apply()从代码中的任何位置调用来获取更新的信息.我不使用它,但我创建的是实例对象而是以不同的方式处理登录.

那么,我们如何确定我们可以安全地声明某个对象为static?我们是否尝试预测其内存消耗还是有其他更好的方法?

问题的原因是移动设备上占用100MB或RAM的项目.不必要地使用静态对象,因此大量数据不需要保存在RAM中.将静态对象转换为实例对象后,内存消耗降至60MB.

PS.我已经看到在应用程序中使用静态对象的可怕情况,因为程序员懒得正确处理逻辑,这样的应用程序消耗的内存比他们应该多100%.

java static android

-2
推荐指数
1
解决办法
92
查看次数

java初学者"Hello World"

我正在努力学习Java.

我不明白为什么这段代码不起作用.

它不会Hello Worldtest()函数输出" " .

我究竟做错了什么?

public class Main {

    public test(args) {
        System.out.println(args);
    }

    public static void main(String[] args) {
        test('Hello World');
    }
}
Run Code Online (Sandbox Code Playgroud)

java methods static static-methods

-3
推荐指数
1
解决办法
1292
查看次数

Android Intent和startActivity仍然需要调用静态方法吗?

我想我已经知道了这个问题的答案,因为看来,呃,有点牵强.但我正在认真寻找解决方案.

假设我有一个Activity,称之为蓝牙活动,启动蓝牙背景线程,即使蓝牙活动消失,线程也会永远运行 - 是的,它确实会永远运行.这个蓝牙背景线程是一个数据采集线程,它不断地收集由Activity绘制的数据,实时称之为Plot活动.我们可以将绘图方法称为一个名为Plot.plotData()的静态方法;

我的问题是我无法判断Plot活动何时处于活动状态,因此我无法确定何时开始调用Plot.data().你可能会认为,因为Plot.plotData()是一个静态方法,我可以随时调用它.但事实并非如此.我必须等到Plot通过Intent()和startActivity实例化.否则Plot的onCreate()方法尚未调用,Plot充满了空指针.

我该如何解决这个问题.添加一个最初为false的静态getter/setter,直到onCreate运行?

static android static-methods

-3
推荐指数
1
解决办法
675
查看次数

内部循环时变量返回0

我正在编写一个简单的PHP类,但是当我尝试在foreach循环中使用变量时,它打印出0(null).但是,当我在该循环之前回显它时,它会打印正确的值.有什么想法吗?

class Search
{
    public static $KeyObject=null;

    //...KeyObject is assigned some value...


    public function resultsToHTML()
    {
        $KeyObject = $this->KeyObject;
        echo "inResults: $KeyObject <br />";
        $htmlString = "";
        if(!empty($this->resultList))
        {
            $htmlString .= "<table><th>Results</th><tbody>";
            foreach($this->resultList as $row)
            {
                $htmlString .= "<tr><td>"+$KeyObject+"</td></tr>";
                $htmlString .= "<tr>";
                foreach($row as $key => $value)
                {
                    $htmlString .= "<td class=\"$key\" id=\"$value\">$value</td>";
                }
                $htmlString .= "</tr>";
            }
            $htmlString .= "</tbody></table>";
        }

        return $htmlString;
    }
}
Run Code Online (Sandbox Code Playgroud)

这回来了......

inResults:Player 00000000000000000000000000000000000000000000000000000000000000000000000000000

php variables static

-3
推荐指数
1
解决办法
222
查看次数