从静态函数调用非静态函数
Call non-static function from static function
我无法从静态函数中调用非静态函数(或者)我想从静态函数调用javascript函数。
[WebMethod]
public static void add_items(string itemslist)
{
get_price(itemslist); // Error An object reference is required for non-static
//(or)
ScriptManager.RegisterStartupScript(this,
this.GetType(),
"script",
"<Script language='javascript' "
+ "type='text/javascript'>message();</script>",
false); //Error in this, this
}
protected void get_price(string item_id)
{
}
由于无论您是否实例化了类,静态方法都是可访问的,因此从静态方法访问类成员可能意味着您引用的是堆栈或堆中尚不存在的东西,从而在运行时创建异常。
因此,如果不首先实例化非静态成员,就不能在静态方法中引用非静态成员。这就是为什么会出现错误。希望这能有所帮助!
当然不能。如果要执行此操作,则需要首先实例化包含非静态方法的对象。
直接选项是创建类的对象,而不是调用方法。如果您没有更新对象状态(在本例中我似乎是这样),则将get_price
方法签名转换为static
不幸的是,您不能在静态方法内部调用实例方法。在你的情况下,以下可能吗?
[WebMethod]
public static void add_items(string itemslist, Action<string> instanceMethod)
{
//get_price(itemslist);// Error An object reference is required for non-static
instanceMethod(itemlist);
}
protected void get_price(string item_id)
{
}
然后像这样将get_price作为参数传递。
add_items(anItemslist, get_price);
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Meteor Router数据函数被调用两次
- 拦截对构造函数的调用
- 为什么(如何)'这'从函数内部调用回调时发生更改
- 比较sessionStorage值时,Javascript函数无法调用
- 如何从构造函数中调用js原型方法
- 使用AJAX将变量发布到不同文件上的php函数并调用该函数
- 从构造函数es6调用静态方法
- 如何在函数中调用函数?(CoffeeScript)
- 只使用常量的静态javascript函数会被编译为常量吗
- 我在画布中的鼠标按下函数在调用时不会重绘背景
- Javascript 从函数名称调用函数
- 使用函数按钮调用 ajaxform
- 调用子类函数时调用的超类函数
- 如何使用字符串作为类名并在函数中调用它
- 轮询 ajax 函数超出调用堆栈
- java-script 函数被调用两次
- 使用 Promise 在另一个函数中调用带有 Bluebird 承诺库的函数
- 更改函数名称调用中的单击事件
- 如何调用在其他 JavaScript 文件中定义的静态 JS 函数