为C#中的对象创建命名空间
本文关键字:创建 命名空间 对象 | 更新日期: 2023-09-27 18:25:51
如何设置对象的命名空间?
现在我必须按照以下方式使用对象。MyFirstTestCase tc=新的MyFirstTest用例();
MyFirstTestCase tc = new MyFirstTestCase();
tc.dothis();
tc.dothat();
// ...
我想以这种方式使用这个对象。MyFirstTestCase tc=新的MyFirstTest用例();
MyFirstTestCase tc = new MyFirstTestCase();
using tc;
dothis();
dothat();
// ...
但这并不奏效。我该怎么做?
澄清我的意思。
// MyFirstTestCase is the class
// tc is the object of MyFirstTestCase
// and instead of:
tc.dothis();
// ... I want to use:
dothis();
// dothis is a method of tc
你不能在C#中做到这一点-它不是VB.
不可能。如果你在处理同一个类,你可以像你希望的那样直接调用方法。但在实例化的对象上,你必须使用你创建的变量。在VB中,它有一个WITH关键字,用于确定代码的一部分的范围,但C#没有这个关键字。
WITH object
.methodA()
.methodB()
END WITH
您的类通常已经在名称空间中。如果没有,你可以手动添加一个,只需将整个东西包装在一个名称空间块中:
namespace Something.Here
{
public class MyClass
{
}
}
所以你可以这样做:
Something.Here.MyClass my_class = new Something.Here.MyClass();
这是VB.Net的特性,C#不允许这样做。但看看这个-http://www.codeproject.com/Tips/197548/C-equivalent-of-VB-s-With-keyword.这篇文章提出了一个简单的方法来获得你想要的东西。
实例方法需要通过实例访问。所以你不能那样做。
WITH块不是C#的一部分,您可以通过链接方法获得类似的功能。基本上每个方法都返回这个。所以你可以写这样的代码:
tc.DoThis().DoThat();
也可以写入
tc
.Dothis()
.DoThat();
这样做的原因是什么?你厌倦了不时地给tc.
加前缀吗?:)如果你经常以这种方式对类调用C#方法,这可能表明你的类结构不好。
您可以将几个公共方法组合成一个方法,然后在类中调用私有方法,或者引入类似"链接"的东西,其中通常void方法会用this
返回它们的类实例:
更改此项:
public class MyFirstTestCase {
public void MyMethod1() {
// Does some stuff
}
public void MyMethod2() {
// Does some stuff
}
}
进入:
public class MyFirstTestCase {
public MyFirstTestCase MyMethod1() {
// Does some stuff
return this;
}
public MyFirstTestCase MyMethod2() {
// Does some stuff
return this;
}
}
你现在能做的是:
MyFirstTestCase tc = new MyFirstTestCase();
tc
.MyMethod1()
.MyMethod2()
// etc....
;
问题更新后编辑:
那么,您实际上希望能够从MyFirstTestCase
类中调用方法,但不需要用类的实例来限定它吗?
你不能那样做。
任一:
var testCase = new MyTestCase(); // Create an instance of the MyTestCase class
testCase.DoThis(); // DoThis is a method defined in the MyTestCase class
或:
MyTestCase.DoThis(); // DoThis is a static method in the MyTestCase class
有关static关键字以及如何在类中定义静态成员的信息。