Tag: static members

从静态基类方法调用子类构造函数

好的……在Objective C中,您可以使用’new this()’从基类中的静态方法创建子类,因为在静态方法中,’this’指的是类,而不是实例。 当我第一次发现它并且我经常使用它时,这是一个非常酷的发现。 但是,在C#中不起作用。 该死的! 那么……任何人都知道如何在静态基类方法中“新建”子类? 这样的东西…… public class MyBaseClass{ string name; public static Object GimmeOne(string name){ // What would I replace ‘this’ with in C#? return new this(name); } public MyBaseClass(string name){ this.name = name; } } // No need to write redundant constructors public class SubClass1 : MyBaseClass{ } public class SubClass2 […]

类装饰器声明静态成员(例如,用于log4net)?

我正在使用log4net,我们的代码中有很多这样的东西: public class Foo { private static readonly ILog log = LogManager.GetLogger(typeof(Foo)); …. } 一个缺点是,这意味着我们将这个10字的部分粘贴在一起,并且偶尔会有人忘记更改类名。 log4net常见问题解答还提到了这种替代可能性,这种可能性更加冗长: public class Foo { private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); … } 是否可以编写装饰器来定义它? 我真的很想说: [LogMe] // or perhaps: [LogMe(“log”)] public class Foo { … } 我在其他语言中做过类似的事情,但从来没有像C#这样的静态编译语言。 我可以从装饰器定义类成员吗? 编辑 :嘿。 我是Lisp程序员。 我很欣赏切换语言的建议,但实际上,如果我要切换语言以获得更好的元编程function,我会一直到Lisp而不是半途而废。 不幸的是,使用不同的语言不是这个项目的选择。

获取静态字段的值

我有以下课程: public static class Pages { public static string LoggedOut = “LoggedOut.aspx”; public static string Login = “Login.aspx”; public static string Home = “Home.aspx”; } 我知道我可以静态使用Pages.Home ,但我的问题有一个原因。 我希望有一个方法,我可以像这样调用: string pageName = Pages.GetPage(“Home”); 等等 C’est可能吗? 谢谢,戴夫

静态初始化inheritance的静态成员

考虑以下示例代码: public class A { public static T TheT { get; set; } } public class B : A { static B() { TheT = “Test”; } } public class Program { public static void Main(String[] args) { Console.WriteLine(B.TheT); } } 这里B.TheT为空。 但是,更改Main方法如下: public static void Main() { new B(); Console.WriteLine(B.TheT); } 正如预期的那样, B.TheT是“测试”。 我可以理解这会强制静态构造函数运行,但为什么第一种情况不会发生这种情况呢? […]

为什么C#编译器重载解析算法将具有相同签名的静态和实例成员视为相等?

让我们有两个成员相同的签名,但一个是静态的而另一个是 – 不是: class Foo { public void Test() { Console.WriteLine(“instance”); } public static void Test() { Console.WriteLine(“static”); } } 但是这样的代码生成会带来编译错误: 类型’Foo’已经定义了一个名为’Test’的成员,它具有相同的参数类型 但为什么? 让我们成功编译,然后: Foo.Test()应输出“static” new Foo().Test(); 应输出“实例” 无法调用静态成员而不是实例1,因为在这种情况下会出现另一个更合理的编译器错误: 无法使用实例引用访问成员’Foo.Test()’; 用类型名称来限定它

Web应用程序中的静态变量

我可以在Web应用程序中使用静态变量吗? 什么是静态的替代品? 当我在页面中使用静态变量并且多个用户使用该应用程序时,它会产生冲突数据(不正确的数据)。 使用静态成员有什么限制? 静态成员是否在内存中共享?

ConcurrentDictionary是否是线程安全的,我可以将它用于静态缓存?

基本上,如果我想做以下事情: public class SomeClass { private static ConcurrentDictionary Cache { get; set; } } 这是否让我避免在整个地方使用lock ?

从静态类访问表单控件

我有一个Form1有很多控件,我需要从另一个静态类访问/编辑控件值。 由于我在表单上有很多控件,因此需要一些时间来定义set并从中获取每个控件。 我想知道是否有任何方法可以在静态类中定义Form1的实例,以便我可以访问此类中的Form1的所有控件? 这是静态类的结构: public static class Glob { public static int int1; public static int Func1() { return 10; } } 我使用静态方法和变量的静态类,因为我需要能够从任何其他forms和类轻松访问其变量和方法。 这样我每次需要调用它时都不需要定义类的实例。 另外,借助静态类,我可以在类和表单之间共享变量。

具有多个应用程序实例的静态成员行为 – C#

我正在使用我的Window应用程序,我正在使用一些静态成员。 public class MyParameter { public static string connectionString = “…”; } 现在如果我在计算机上安装我的应用程序并打开同一应用程序的两个实例 ‘connectionString’会对两个实例共同吗? 或者每个实例都有其connectionString?

将静态参数传递给类

据我所知,你无法将参数传递给C#中的静态构造函数。 但是,在创建类的实例之前,我确实需要传递2个参数并将它们分配给静态字段。 我该怎么办?