0

オブジェクトの名前空間を設定するにはどうすればよいですか?

ここで、次の方法でオブジェクトを使用する必要があります。MyFirstTestCase tc = new MyFirstTestCase();

MyFirstTestCase tc = new MyFirstTestCase();
tc.dothis();
tc.dothat();
// ...

このようにオブジェクトを使用したいと思います。MyFirstTestCase tc = new MyFirstTestCase();

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
4

8 に答える 8

3

これは C# ではできません。VB ではありません。

于 2013-08-02T07:35:16.590 に答える
1

ありえない。同じクラスで作業している場合は、メソッドを好きなように直接呼び出すことができます。ただし、インスタンス化されたオブジェクトでは、作成した変数を使用する必要があります。VB では、コードの一部をスコープするために使用される WITH キーワードがありますが、C# にはこれがありません。

WITH object
   .methodA()
   .methodB()
END WITH
于 2013-08-02T07:42:48.420 に答える
0

これは VB.Net の機能で、C# では許可されていません。しかし、これを見てください - http://www.codeproject.com/Tips/197548/C-equivalent-of-VB-s-With-keyword。この記事では、必要なものをほとんど取得する簡単な方法を提案しています。

于 2013-08-02T07:45:29.843 に答える
0

通常、クラスはすでにネームスペースにあります。そうでない場合は、名前空間ブロックで全体をラップするだけで、手動で追加できます。

namespace Something.Here
{

    public class MyClass
    {

    }

}

したがって、次のことができます。

Something.Here.MyClass my_class = new Something.Here.MyClass();
于 2013-08-02T07:33:59.043 に答える
0

WITH ブロックは C# の一部ではありません。メソッドをチェーンすることで、同様の機能を得ることができます。基本的に各メソッドはこれを返します。したがって、次のようなコードを記述できます。

tc.DoThis().DoThat();

これも書くことができます

tc
.Dothis()
.DoThat();
于 2013-08-02T07:54:53.753 に答える
0

このようにする理由は何ですか?tc.時々プレフィックスを付けるのにうんざりしていませんか? :) クラスで C# メソッドを頻繁に呼び出し続ける場合は、クラスが適切に構造化されていないことを示している可能性があります。

いくつかのパブリック メソッドを 1 つに結合してクラス内のプライベート メソッドを呼び出すか、通常は 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.... 
;
于 2013-08-02T07:55:26.397 に答える
0

インスタンスメソッドは、インスタンス経由でアクセスする必要があります。だからあなたはそれをすることはできません。

于 2013-08-02T07:50:42.243 に答える
-1

質問の更新後に編集:

では、実際にはクラスからメソッドを呼び出せるようにしたいのですが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 キーワードに関する情報と、クラスで静的メンバーを定義する方法

于 2013-08-02T07:42:54.957 に答える