为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#中的对象创建命名空间

你不能在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关键字以及如何在类中定义静态成员的信息。