当我尝试一些代码来学习将对象的引用传递给方法时,当我尝试删除方法头中的静态时出现错误.错误消息说明:非静态字段,方法或属性需要对象引用......但是参数中是否没有引用?我见过不使用静态的代码,为什么这不起作用?我知道当从非对象的类中使用方法时会使用静态.理解一些解释是值得赞赏的.谢谢!
// Method
internal static string ChangeName(Box obj)
{
return obj.BoxName;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我添加了整个代码.我在main方法中调用的问题是静态的吗?
class Program
{
static void Main(string[] args)
{
Box box1, box2;
box1 = new Box("Nick","R90",1);
box2 = new Box("Hanna","B27",2);
Console.WriteLine(ChangeName(box2));
Console.Read();
}
// Methods
private static string ChangeName(Box obj)
{
return obj.BoxName;
}
}
Run Code Online (Sandbox Code Playgroud)
静态方法如下所示:
MyClass.Method(arg);
Run Code Online (Sandbox Code Playgroud)
像这样调用实例方法:
MyClass myInstance = new MyClass();
myInstance.Method(arg);
Run Code Online (Sandbox Code Playgroud)
两者不兼容.
如果要更改方法签名,还需要更改调用方法的每个位置.
编辑:您正在使用不合格的电话.以下是使用不合格电话的规则.
这个方法应该真正实现为Box类中的实例方法.然后你会说:
Console.WriteLine(box2.ChangeName());
Run Code Online (Sandbox Code Playgroud)
如果您无法访问Box代码,那么您可以编写扩展方法,或者按照示例保持方法静态.
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |