标签: static-classes

模拟静态类

我有一个静态类,它包含winspool中的一些本机方法:

public static class WinSpool
{
     [DllImport("winspool.drv")]
     public static extern int OpenPrinter(string pPrinterName, out IntPtr phPrinter, IntPtr pDefault);
     ...
     //some more methods here
}
Run Code Online (Sandbox Code Playgroud)

我想模仿它们进行单元测试,但是找不到这种模式.(每个人都避免使用静态类吗?)

.net mocking static-classes

7
推荐指数
1
解决办法
5741
查看次数

Java中静态类背后的概念

请考虑以下代码

class A {
    static class B{
        int a = 0;
    }
    public static void main(String argc[]) {
        B var1 = new B();
        B var2 = new B();
        var1.a = 5;
        var2.a = 6;
        System.out.println(var1.a+" and "+var2.a);
    }
}
Run Code Online (Sandbox Code Playgroud)

它输出5和6.静态成员只加载一次.但输出与该语句相矛盾.所以静态类的概念肯定与静态数据成员不同.那么静态类的静态意味着什么

java static static-classes

7
推荐指数
1
解决办法
827
查看次数

ASP.NET MVC,ActionFilters,静态类和传递数据

我想听听您对以下情况的意见和建议:

我已经定义了一个自定义的ActionFilter,它可以完成一些工作并带来一些价值.我想在控制器动作和模型中使用该值.

现在,我可以使用TempData将此值从ActionFilter传递给任何控制器操作方法,然后将此值分配给传递给返回视图的所有模型.

我相信它会起作用,但是这个TempData会在会话中出现,当时没有人真正需要它.该值应该在单个请求期间专门用于代码,之后它会有效地使其无效.

我提出了两个选择:

  1. 在ActionFilter中,我在OnActioExecuting()的TempData中设置了这个值,然后在OnActionExecuted()中删除它.我是否正确理解,当调用OnActionExecuted时,控制器操作已完成,响应已经生成,并且此TempData内容尚未进入会话YET?

  2. 在我的任何自定义静态类(逻辑)中,我只为这个值定义一个公共属性,并在需要时使用它.在OnActionExecuting()和实际执行控制器方法之间,这个静态字段是否会丢失?在服务器上的请求处理期间是否还有其他问题可能会丢失此值?

还有其他/更好的选择我还没考虑过吗?

.net architecture asp.net-mvc static-classes action-filter

6
推荐指数
1
解决办法
2331
查看次数

为什么我不能为静态类创建扩展方法?

当我尝试为File类创建一个扩展方法时,我收到一个错误,告诉我我不能这样做,因为该类是静态的.但是,我不明白为什么这会停止创建扩展方法,有什么含义?

谢谢

c# extension-methods static-classes

6
推荐指数
3
解决办法
207
查看次数

AS3:静态类与单身人士

我知道,好朋友不是"对抗"问题的粉丝,但是......甚至还有一点点重述,对比部分仍然存在,所以,为什么要隐藏它.

基本上,我想,当知道我为什么要使用一个单身或静态类,有什么可以提供单一个静态类倾斜,反之亦然.

很长一段时间我都使用了两者,我无法看到为什么我不应该使用其中一个.

谢谢.

singleton actionscript-3 static-classes

6
推荐指数
1
解决办法
8331
查看次数

在静态类中存储数据[PHP]

大家好,圣诞快乐!

我在效率方面遇到了一些麻烦,我希望StackOverflow社区可以帮助我.

在我的一个(静态)类中,我有一个从我的数据库中获取大量信息的函数,解析该信息并将其放入格式化的数组中.这个类中的许多函数依赖于那个格式化的数组,并且在整个类中,我多次调用它,这意味着应用程序在一次运行中多次经历这个过程,我假设它不是很有效.所以我想知道是否有更有效的方法可以做到这一点.有没有办法让我将格式化的数组存储在静态函数中,这样我每次需要格式化数组的信息时都不必重新执行整个过程?

private static function makeArray(){ 
   // grab information from database and format array here
   return $array;
}

public static function doSomething(){
   $data = self::makeArray();
   return $data->stuff;
}

public static function doSomethingElse(){
   $data = self::makeArray();
   return $data->stuff->moreStuff;
}
Run Code Online (Sandbox Code Playgroud)

php database class persistent static-classes

6
推荐指数
1
解决办法
706
查看次数

静态嵌套类的实例变量与外部类的静态变量

我在 java 中使用静态嵌套类用于特定用例。下面显示了相同的最小示例:

public class Foo {
    static int fooInner = getInner(); // CASE 1 

    private static class StaticFoo {
        int fooInner = getInner(); // CASE 2

        public int useFooInner(){
            System.out.println(fooInner);
            //do something
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是案例 1 中的内存分配与案例 2 中的内存分配有何不同?或者是一样的?如果我也将 case 2 变量设为静态会怎样。内存使用会有所不同吗?

注意:请不要提及会发生阴影。虽然我已经将两个变量都放在那里,但它是一个“OR”案例,这就是“CASE”的原因。

PS:感觉内存使用量应该是一样的。由于嵌套类是静态的,因此不会为每个对象创建它,因此实例变量fooInner (案例 2)也将只创建一次。因此, getInner() 函数将只运行一次。但这只是抽象层面+直觉。更具描述性的答案将不胜感激!

java static static-classes java-8

6
推荐指数
1
解决办法
158
查看次数

在c#中扩展Enumerable类?

我有条件扩展c#中的Enumerable类来添加接受长参数的新Range方法.我无法定义这样的方法

public static IEnumerable<long> Range(this Enumerable source, long start, long length)
{
    for (long i = start; i < length; i++)
    {
        yield return i;
    }
}
Run Code Online (Sandbox Code Playgroud)

由于扩展方法只能通过其对象访问.它给了我一个错误

'System.Linq.Enumerable':静态类型不能用作参数

我们可以澄清一下如何做到这一点

注意:我知道我们可以在没有扩展方法的情况下轻松解决这个问题,但我需要这个Enumrable类.

c# extension-methods static-classes

5
推荐指数
2
解决办法
3239
查看次数

错误:扩展方法必须在顶级静态类中定义(CS1109)

我正在尝试制作一个倒计时程序,我可以开始和停止,并在需要时将倒计时的值设置为10分钟.

但我收到的错误我不太明白.我不是那样的C#,所以这里是代码:

有人可以帮我一点吗?想想我在框架3.0上运行什么?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Timers;

namespace PauseMaster
{   
    public partial class MainForm : Form
    {           
        public MainForm()
        {           
            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {               
        }

        private DateTime endTime;
        private void btnStartStop_Click(object sender, EventArgs e)
        {
            if(btnStartStop.Text == "START")
            {
                int hours = int.Parse(string.IsNullOrEmpty(txtCountFromHour.TextBox.Text) || txtCountFromHour.TextBox.Text == "timer" ? "0" : txtCountFromHour.TextBox.Text);
                int mins = int.Parse(string.IsNullOrEmpty(txtCountFromMin.TextBox.Text) || txtCountFromMin.TextBox.Text == "minutter" ? "0" …
Run Code Online (Sandbox Code Playgroud)

.net c# extension-methods static-classes

5
推荐指数
1
解决办法
1万
查看次数

静态类的优缺点

我是一位使用C#的C ++程序员,据说我不使用静态类。我了解在C#中,如果该类只有静态成员,那么它应该是静态的。(我的类只有静态成员)您能解释一下使用静态类可能会引起问题吗?我们何时真正应该使用它们?

谢谢

c# static-methods static-classes

5
推荐指数
1
解决办法
4022
查看次数