我开始使用ReSharper的,它表明,当一个方法可以进行静态的.将几百种方法转换为静态方法会在很长一段时间内增加内存占用量吗?
我真的不明白为什么下面的getMyClass2方法不能是静态的,为什么它不是有效的Java代码?
public class MyClass
{
private class MyClass2
{
public String s1 = "";
public String s2 = "";
}
private MyClass2 myClass2;
private static MyClass2 getMyClass2()
{
MyClass2 myClass2 = new MyClass2();
return myClass2;
}
public MyClass()
{
myClass2 = getMyClass2();
}
}
Run Code Online (Sandbox Code Playgroud) 为什么以下代码打印"Main"?
public class Main
{
public static void method()
{
System.out.println("Main");
}
public static void main(String[] args)
{
Main m = new SubMain();
m.method();
}
}
class SubMain extends Main
{
public static void method()
{
System.out.println("SubMain");
}
}
Run Code Online (Sandbox Code Playgroud)
在运行时,m指向一个实例Submain,因此它应该在概念上打印"SubMain".
我可以将Python方法同时定义为静态和实例吗?就像是:
class C(object):
@staticmethod
def a(self, arg1):
if self:
blah
blah
Run Code Online (Sandbox Code Playgroud)
所以我可以用它们来调用它:
C.a(arg1)
C().a(arg1)
Run Code Online (Sandbox Code Playgroud)
目的是能够运行两组逻辑.如果作为实例方法访问,它将使用实例变量并执行操作.如果作为静态方法访问,它将不会.
是否有人能够解释或指向解释静态类和方法的范围如何与ASP.NET用户会话的范围交互的文章.
以下是解释我问题的更具体情况:
一旦用户B命中数据,数据是否已经初始化?
如果用户A的asp.net会话在用户B访问网站之前到期,该怎么办?
您好我正在尝试使用aspx页面中的ajax运行webmethod.基本上我想用一个查询字符串重定向到另一个aspx页面,但我想这样做<a href>,因为它是jquery菜单的一部分.
根据我的学习,我只能使用ajax来调用静态webmethods,但我可以从我的静态函数中重定向.
visual studio用红线标记它:"非静态字段方法或属性System.Web.HttpResponse.Redirect(string)需要一个对象引用"
这是ajax调用:
function redirect_to_profile() {
$.ajax({
type: "POST",
url: "personal_profile.aspx.cs.aspx/redirect_to_profile",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (res) {
alert("success");
},
error: function (res, msg, code) {
// log the error to the console
} //error
});
}
Run Code Online (Sandbox Code Playgroud)
这是一个href:
<a onclick="redirect_to_profile()">Personal Profile</a>
Run Code Online (Sandbox Code Playgroud)
这是personal_profile.aspx中的webmethod
[WebMethod]
public static void redirect_to_profile()
{
dbservices db=new dbservices();
string user = HttpContext.Current.User.Identity.Name;
string id = db.return_id_by_user(user);
HttpResponse.Redirect("personal_profile.aspx?id="+id);
}
Run Code Online (Sandbox Code Playgroud) 我是一名C#开发人员,但我今天继承了一个传统的VB应用程序,其中包含0个文档.我已经开始阅读代码并每5秒引用一次VB关键字列表.
我想我不明白之间的区别Shared和Static.
阅读这篇文章:https://stackoverflow.com/a/1980293/1189566
它指出:
VB没有
static,它有shared
但是你可以在上面链接的关键字列表中看到,Static是一个保留关键字.它看起来Static只适用于字段,Shared可以在方法或字段上?
我想最终我只是希望有人可以扩展我链接的答案,为VB菜鸟提供更多细节.
例如,说我有这个
public class MyClass
Dim myVar as Integer = 1
public shared sub UpdateMyVar()
myVar = 2
end sub
end class
public class MyOtherClass
Dim cOne = New MyClass()
Dim cTwo = New MyClass()
cOne.UpdateMyVar()
txtMyTextBox.Text = cTwo.myVar.ToString()
end class
Run Code Online (Sandbox Code Playgroud)
请原谅任何语法问题.假设此代码编译.我已经开始在一个半小时前开始浏览代码了.
会cTwo.myVar是1或2?我猜是2因为Shared似乎影响了一个类的所有实例?这似乎非常危险.
我正在使用字符串类的扩展方法.在该扩展方法中,我创建了一个StringBuilder实例.
这是代码:
public static string GetPlainTextFromHtml(this string htmlString)
{
StringBuilder sb = new StringBuilder();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlString);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//text()"))
{
string text = node.InnerText;
if (!string.IsNullOrEmpty(text))
sb.Append(text.Trim());
}
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
它有效但我关心内存管理.静态方法没有实例化,所以如果我在静态方法中实例化一个对象会发生什么.假设我将此静态方法称为100次,内存中是否有100个StringBuilder实例副本?
它会导致内存泄漏吗?当静态方法执行终止时,垃圾收集器是否处置对象实例?
看起来静态方法与静态Func字段相同.我错过了什么,或者它们本质上是可以互换的(相同的足迹等)?
静态属性最终与另外两个示例相同,除了它包括"get"访问器的(最小)开销.
也许有点毫无意义,毫无顾忌地要问......但我喜欢理解"幕后"发生了什么,即使它并不是立即相关的.
可以肯定的是:我不打算将所有静态方法切换为lambda表达式(并让我的同事疯狂).但是,可能存在一些合理的情况,其中静态变量比编写方法更有意义.或许相反:说服某人使用静态方法而不是lambda表达式来使代码更具可读性或其他
另外,我很好奇是否有更好的方法来调查这些问题
我将这个简单的例子放入LINQPad(v4.57.02,"使用/ optimize +编译"):
void Main()
{
var hold = "this is the thing. it returns true";
var held = "this is the one that returns false";
Console.WriteLine(One.Check(hold));
Console.WriteLine(One.Check(held));
Console.WriteLine(Two.Check(hold));
Console.WriteLine(Two.Check(held));
}
// Define other methods and classes here
class One
{
public static bool Check(string value)
{
return value != null && value.Contains('.');
}
}
class Two
{
public static Func<string, bool> Check = v => v != …Run Code Online (Sandbox Code Playgroud) 如何键入返回实例对象的静态方法?
import typing
class foo(object):
@staticmethod
def getOne() -> foo:
return FooRegister().get()
Run Code Online (Sandbox Code Playgroud)
FooRegister包含 的所有实例foo。但是,如果我按所示输入它,python 会抱怨,因为foo尚未定义。
键入此内容的正确方法是什么?
static-methods ×10
c# ×5
asp.net ×2
java ×2
python ×2
static ×2
ajax ×1
descriptor ×1
inheritance ×1
javascript ×1
lambda ×1
methods ×1
shared ×1
type-hinting ×1
types ×1
vb.net ×1