using语句中未命名对象的调用函数
Call function of unnamed object in using statement
正在尝试学习 using
语句。如何在tst()
函数中调用新创建的未命名对象的add
函数:
public class AnswerCmd : IDisposable
{
public static void tst()
{
using (new AnswerCmd())
{
//add(5); not works
}
}
public void add(int value)
{
//....
}
public void Dispose()
{
throw new NotImplementedException();
}
}
因为add
不是static,你需要创建一个新的AnswerCmd
实例来访问它,像这样:
using (var instance = new AnswerCmd())
{
instance.add(5);
}
因为tst
函数是静态函数,而add
函数不是。
如果你想创建一个实例尝试移除static
public class AnswerCmd : IDisposable
{
public void add(int value)
{
}
public void Dispose()
{
}
}
那你就可以在外面这样用了
using (var ans = new AnswerCmd())
{
ans.add(5);
}
备注
删除 Dispose
函数中的 throw new NotImplementedException();
否则,当您离开 using
.
时会出现错误
您的代码几乎没问题,但如果您稍微更改一下代码,您就可以做您想做的事。这是您的代码,稍作改动:
public class AnswerCmd : IDisposable
{
public static void tst()
{
using (AnswerCmd var = new AnswerCmd())
{
var.add(5);
}
}
public void add(int value)
{
Console.WriteLine($"Add: {value}");
}
public void Dispose()
{
//throw new NotImplementedException();
}
}
您必须在您的 using 语句中以您的 class 类型声明一个变量 AnswerCmd var
,然后在创建和分配并反对它之后像这样 AnswerCmd var = new AnswerCmd()
调用您的 add
这样的方法 var.add()
。
如果您想了解更多相关信息以及为什么要这样做,我不得不说这是因为您的 tst
方法是 static 而您的 add
方法是 非静态 。非静态方法仅适用于 class 的对象,如果您没有从 class 创建对象,则无法调用它们。当您在不创建对象的情况下直接调用非静态方法时,这是一个语法错误。
您还必须删除或评论 Dispose
方法中的 throw new NotImplementedException();
,因为当您离开使用时,您的方法将抛出 Exception
。
如果您访问 this link 并阅读有关静态方法和非静态方法之间差异的更多信息,这很好。
正在尝试学习 using
语句。如何在tst()
函数中调用新创建的未命名对象的add
函数:
public class AnswerCmd : IDisposable
{
public static void tst()
{
using (new AnswerCmd())
{
//add(5); not works
}
}
public void add(int value)
{
//....
}
public void Dispose()
{
throw new NotImplementedException();
}
}
因为add
不是static,你需要创建一个新的AnswerCmd
实例来访问它,像这样:
using (var instance = new AnswerCmd())
{
instance.add(5);
}
因为tst
函数是静态函数,而add
函数不是。
如果你想创建一个实例尝试移除static
public class AnswerCmd : IDisposable
{
public void add(int value)
{
}
public void Dispose()
{
}
}
那你就可以在外面这样用了
using (var ans = new AnswerCmd())
{
ans.add(5);
}
备注
删除 Dispose
函数中的 throw new NotImplementedException();
否则,当您离开 using
.
您的代码几乎没问题,但如果您稍微更改一下代码,您就可以做您想做的事。这是您的代码,稍作改动:
public class AnswerCmd : IDisposable
{
public static void tst()
{
using (AnswerCmd var = new AnswerCmd())
{
var.add(5);
}
}
public void add(int value)
{
Console.WriteLine($"Add: {value}");
}
public void Dispose()
{
//throw new NotImplementedException();
}
}
您必须在您的 using 语句中以您的 class 类型声明一个变量 AnswerCmd var
,然后在创建和分配并反对它之后像这样 AnswerCmd var = new AnswerCmd()
调用您的 add
这样的方法 var.add()
。
如果您想了解更多相关信息以及为什么要这样做,我不得不说这是因为您的 tst
方法是 static 而您的 add
方法是 非静态 。非静态方法仅适用于 class 的对象,如果您没有从 class 创建对象,则无法调用它们。当您在不创建对象的情况下直接调用非静态方法时,这是一个语法错误。
您还必须删除或评论 Dispose
方法中的 throw new NotImplementedException();
,因为当您离开使用时,您的方法将抛出 Exception
。
如果您访问 this link 并阅读有关静态方法和非静态方法之间差异的更多信息,这很好。