标签: static-classes

c#vb:我们真的需要System.Lazy吗?

我们真的需要System.Lazy吗?假设我的类库有100个静态类,每个静态类使用平均100个静态System.Lazys = 10000 System.Lazys,当使用我的类库的程序启动时必须启动它们?

我的意思是我们通常不只使用1个类库,比如我们导入15个.dll每个都有大量的静态System.Lazys ..我很确定它会花很长时间启动所有那些System.Lazys,更不用说它也会囤积大量内存(因为每个内存都有自己的System.Func让我们把它放在每个50字节=内存500kb)

所以我想知道..最好是以"旧"的方式做到这一点(比如使用布尔来跟踪是否有东西被启动)

.net static-classes

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

为什么我不能在静态类中访问公共属性字段

我想弄清楚为什么这不起作用......

public static class ApplicationType
{
    private static ApplicationEnum application = ApplicationEnum.App1; 
    public static ApplicationEnum Application
    {
        get { return application; }
        set { application = value; }
    }

    public enum ApplicationEnum
    {
        App1,
        App2,
        App3
    }
}
Run Code Online (Sandbox Code Playgroud)

我想Application从另一个班级访问,比如......

public partial class MainWindow : Window
{
    ApplicationType.   //<-- Intellisense shows only ApplicationEnum    }
Run Code Online (Sandbox Code Playgroud)

谢谢.

编辑:问题是我没有按照我想的那样在MainWindow内部进行尝试.

.net c# enums static-classes

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

为什么静态嵌套类不能访问外部类的"this"指针?

在此输入图像描述

困扰我的是第二点.

我认为这可能与"this"指针不是静态的事实有关,因此内部类无法访问它.我不确定这是否是正确的解释.

这也为我提出了另一个问题,即"这个"指针定义在哪里?

java class nested-class static-classes

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

修改WriteLine方法的行为?

我需要一个非常简单的想象的东西 - 修改System.Console类方法WriteLine不仅可以写入控制台,还可以写入文本日志文件。

我只需要在调用 WriteLine 之前使用预设参数运行此函数,然后执行通用 WriteLine:

class Logger
{
    static public void WriteLog(string logMessage, string fileName ,bool addTimeStamp = true)
    {
        //Getting temp folder
        string destPath = Path.GetTempPath();

        //Creating folder
        if (!Directory.Exists(destPath))
            Directory.CreateDirectory(destPath);

        //Naming log file
        var filePath = String.Format("{0}\\{1}.log",
            destPath,
            fileName
            );

        //Writing to timestamp
        if (addTimeStamp)
        {
            logMessage = String.Format("[{0}] - {1}{2}",
                DateTime.Now.ToString("HH:mm:ss", CultureInfo.CurrentCulture),
                logMessage,
                Environment.NewLine);
        }
        else
        {
            logMessage = String.Format("{0}{1}",
                logMessage,
                Environment.NewLine);
        }
        //Writing to log
        File.AppendAllText(filePath, logMessage);
    }
}
Run Code Online (Sandbox Code Playgroud)

我考虑过继承,但我什至无法创建一个类,因为 …

c# console-application static-classes

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

将静态方法放在静态类中并将实例方法放在静态类中有什么区别?

这两个班级有什么区别?

public static class MyClass
{
    public static string SayHello()
    {
        return "Hello";
    }
}

public static class MyClass
{
    public string SayHello()
    {
        return "Hello";
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个SayHello方法是否也是静态的,因为它在静态类上?如果是这样,当在静态类中定义静态关键字时,有没有理由在方法中包含静态关键字?

c# methods static class static-classes

0
推荐指数
1
解决办法
194
查看次数

在C#中使用两个具有相同名称的静态类

我有一个DLL,我已经包含在我的C#项目中.我们称之为"one.dll"这个DLL包含一个名为"staticclass"的静态类

我有另一个DLL,我也包含在同一个项目中.我们称之为"two.dll"这个DLL还包含一个名为"staticclass"的静态类

现在当我在我的项目中同时包含两个DLL并尝试访问"staticclass"时,自然它会给出错误.有没有办法我可以更改类的名称或给它一些别名,所以让我们说"one.dll"中的"staticclass"将保持原样,我可以给"staticclassTwo"别名,这是"两个" .DLL"

请注意我无法访问"one.dll"和"two.dll"的源编解码器

c# dll static-classes

0
推荐指数
1
解决办法
1831
查看次数

静态私有数据成员未在静态类中初始化?

鉴于下面的C#代码,我希望立即初始化私有数据成员_userDataStorage.相反,我发现它根本没有被初始化.我在初始化语句上放了一个断点,它永远不会被命中.这意味着DB静态属性始终返回NULL.静态类的工作方式与非静态类的工作方式不同吗?

public static class UserDataStorageWrapper
{
    private static UserDataStorage _userDataStorage = new UserDataStorage();

    public static UserDataStorage DB
    { 
        get
        {
            return _userDataStorage;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我将更改代码以检查NULL并立即初始化_userDataStorage.但我想在这里确定我的期望.

c# static initialization static-classes

0
推荐指数
1
解决办法
285
查看次数

静态类和Session变量

我已经定义了一个静态类.在那个静态类中,我有以下方法.

public static int GetUserId()
{
    if(IsUserLoggedIn())
    {
        return Convert.ToInt16(HttpContext.Current.Session["user"]);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:当每个用户运行该功能时,每个用户是否会获得不同的值?(考虑到每个用户会话为Session ["user"]获得不同的userId.

我不知道静态类是否对此有用或可能导致冲突问题.我在C#/ ASP.NET中开发.

c# asp.net session-variables static-classes

0
推荐指数
1
解决办法
1570
查看次数

C#静态类的两个名称

它非常懒惰,但我想知道是否有可能让两个名字本质上指向同一个静态类.

我有一个很长的描述性静态类名BusinessLogicServiceUtility(例如),它在代码中看起来很啰嗦.

我很乐意使用它BLSU作为替代方案,因此我尝试用我的短名称扩展长类:

public static class BLSU : BusinessLogicServiceUtility
{
}
Run Code Online (Sandbox Code Playgroud)

这可能看起来像菜鸟,但事实证明,它不起作用.

看起来好像我可以使用short类中的方法将长方法中的每个方法包装起来,但是有很多方法,这使得它保持痛苦并绕过整个懒惰目标.

有没有办法将一个名称分配给一个静态类,或者其他一些方法只是"扩展"一个静态类?

c# static-classes

0
推荐指数
1
解决办法
520
查看次数

通过静态类访问 HttpContext 可以“正确”处理不同的请求

我在尝试解决需要非控制器中的一些标头的问题时发现了这篇文章
我对这种方法持怀疑态度,作者没有回应。我主要关心的是使用 global static 的方法HttpContext。我在想它不应该处理两个请求。这种情况的一个例子如下(连同我提到的文章中介绍的方法):

public static class AppContext
{
    public static IHttpContextAccessor HttpContextAccessor { get; set; }
    public static void Configure(IHttpContextAccessor accessor)
    {
        HttpContextAccessor = accessor;
    }
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env,
    IHttpContextAccessor contextAccessor)
{
    AppContext.Configure(contextAccessor);
    ...
}

[Route("api/[controller]")]
[ApiController]
public class ExampleController : ControllerBase
{
    [HttpGet("{number}")]
    public IActionResult Example(int number)
    {
        if (number == 1)
        {
            Thread.Sleep(10000);
        }

        var result = AppContext.HttpContextAccessor.HttpContext.Request.GetDisplayUrl();

        return Ok(result + " " + number);
    } …
Run Code Online (Sandbox Code Playgroud)

c# httpcontext static-classes asp.net-core

0
推荐指数
1
解决办法
1366
查看次数

哪里首选静态类?

为什么我们使用静态类?作为新手我明白

(如果我错了,请纠正我。)

  • 我们不必创建类的实例并按名称使用数据成员和方法。
  • 任何其他类都不能继承它
  • 我们只有静态方法和静态数据成员

在普通班的时候

  • 我们也可以有静态成员和静态方法。
  • 并用班级名称称呼他们

那么为什么首选静态类呢?或首选静态类?

c# asp.net asp.net-mvc class static-classes

0
推荐指数
1
解决办法
162
查看次数