Tag: static

C#中静态事件的负面影响/不良做法

当我创建将在应用程序的不同区域中使用的事件时,我会重复使用下面的代码。 我觉得它非常有用,它使事件很容易在代码中遵循。 有什么理由说这可能是一个坏主意吗? 这有点宽泛,但基本上有理由不这样做吗? 活动课程: public delegate void FocusEventHandler(object source, FocusEventArgs e); class FocusEvent { public static event FocusEventHandler focusEvent; public static void Focus(bool status) { focusEvent(null, new FocusEventArgs(status)); } } public class FocusEventArgs : EventArgs { public bool Focused { get; set; } public FocusEventArgs(bool f) { Focused = f; } } 所以我需要的是: FocusEvent.Focus(false); […]

System.Web.HttpContext.Current上的混淆

因此,在silverlight应用程序的服务器代码中,我看到对System.Web.HttpContext.Current.User.Identity.Name多个引用。 问题是:如果System.Web.HttpContext.Current是静态属性,那么如何使用不同的System.Web.HttpContext.Current对象处理不同的并发请求? 我想我在这里错过了一些简单的东西。

c#中的私有静态变量和线程安全性

我的同事在multithreadingc#app中编写了以下代码… public class1 { private static partialClass var1 = new partialNonStaticClass(); public static method1() { //do something with var1 } } 尽管var1是私有的并且设置为非静态的部分类,但它是静态的这一事实意味着它可以被所有线程共享。 此外,不对var1执行锁定。 因此,var1不是线程安全的。 只是想让某人validation我是对的。

使用控制台应用程序调用非静态类

我正在尝试使用控制台应用程序从另一个类调用方法。 我尝试调用的类不是静态的。 class Program { static void Main(string[] args) { Program p = new Program(); var myString = p.NonStaticMethod(); } public string NonStaticMethod() { return MyNewClass.MyStringMethod(); //Cannot call non static method } } class MyNewClass { public string MyStringMethod() { return “method called”; } } 我收到错误: 无法在静态上下文中访问非静态方法“MyStringMethod”。 如果我将MyStringMethod移动到类程序,这是有效的。 我怎么能成功呢? 我不能使类静态也不能使方法。

c#静态类和非静态有什么不同(我说的是类本身而不是字段)

语法可能有误 public static class Storage { public static string filePath { get; set; } } 和 public class Storage { private void Storage () {}; public static string filePath { get; set; } } 我从互联网上的一个例子中得到了这个。 第二个有什么用?

为什么设置静态方法会导致堆栈溢出?

如果我使用set访问器更改C#中的静态类成员,为什么会出现堆栈溢出错误? 我不是把这个视为一个错误,我只是想知道机器内部究竟发生了什么。

如何声明变量以供全局使用

我搜索了类似问题的论坛,据我所知,要避免全局变量。 对我来说这不合逻辑,因为我是编程新手。 如果我已经正确地理解了这一切,那么静态变量应该可以完成我正在寻找的工作。 我在主窗口中创建了四个选项的combobox,当选择combobox时,声明变量b。 这是在private void SelectionChanged. 当选择combobox声明变量b时,弹出用户控件。 我想在我的程序中进一步使用变量b,但我无法访问它。 我试图声明static int b; 在代码的开头,但我不确定我是否理解正确使用静态变量。 有人可以帮帮我吗?

静态类c#中没有静态嵌套类

考虑这种情况 Public static Class GlobalParam { //static classes strings int and more… class NoneStaticClass { //some noneStatic params } } 在另一个class (无静态)中,我以这种方式调用NoneStaticClass的实例 GlobalParam.noneStaticClass NSC = new GlobalParam.noneStaticClass(); //some manipulation on NSC params 后来我使用像那样的方法 void DoSomething(GlobalParam.noneStaticClass nsc) { GlobalParam.noneStaticClass NewNSC = nsc //Some manipulation in NewNSC } 现在,当我检查存储在NSC中的数据时,我可以清楚地知道它已被更改,为什么会这样? 将静态类放在静态中是不是以某种方式不正确?

为什么OOP中静态类的最佳实践会有所不同?

我目前正在阅读有关Java最佳实践的内容,我发现根据本书,我们必须支持静态类而非非静态类 。 我记得在C#最佳实践中,我们必须根据Dennis Doomen的C#3.0,4.0和5.0编码指南来避免这种情况: AV1008 – 避免静态类 除了扩展方法容器之外,静态类通常会导致设计错误的代码。 除非你愿意使用一些非常黑客的工具,否则即使不是不可能,它们也是非常困难的。 注意如果您确实需要该静态类,请将其标记为静态,以便编译器可以阻止实例成员并实例化您的类。 这可以减轻您创建显式私有构造函数的麻烦。 我发现这两个用于C#答案和Java答案何时使用和避免静态类,但仅仅是好奇心 – C#和Java都是OOP语言,为什么它在最佳实践中是完全不同的? 更新:我不能从Java书中复制这么多页面,但底线是: 如果声明一个不需要访问封闭实例的成员类,则始终将static修饰符放在其声明中,使其成为静态成员类而非非静态成员类。 如果省略此修饰符,则每个实例将对其封闭实例具有无关的引用。 存储此引用会花费时间和空间,并且可能导致封闭实例被保留,否则它将有资格进行垃圾回收(第6项)。 如果您需要分配没有封闭实例的实例,您将无法这样做,因为非静态成员类实例需要具有封闭实例。 私有静态成员类的常见用法是表示由其封闭类表示的对象的组件。 它只是关于性能吗? 请注意,这个问题更多的是关于静态类和OOP ,而不是Java和C#之间的差异。

CLR如何处理静态类?

任何人都可以解释CLR如何处理静态类? CLR是否为内部处理静态类创建了一个单例实例? 如果没有,为什么我们在C#中有一个静态构造函数? (根据我的理解,我们仅使用构造函数来实例化类)