'0x12345678' または単に '12345678' などの文字列表現として返されるオブジェクトのインスタンスを取得することは可能ですか?
この疑似コードのようなもの:
string myObjectsInstanceAsAString = myObject.instance.ToString();
ありがとう
'0x12345678' または単に '12345678' などの文字列表現として返されるオブジェクトのインスタンスを取得することは可能ですか?
この疑似コードのようなもの:
string myObjectsInstanceAsAString = myObject.instance.ToString();
ありがとう
override
の場合は が必要ToString()
method
ですobject
type
。
public override string ToString(){
// do implementation here
}
class MyClass {
private static int _counter = 0;
private int _id;
public MyClass() {
_id = ++_counter;
}
public override string ToString() {
return _id.ToString();
}
}
それがソートするのに役立つ値になるかどうかはわかりませんが、あなたが求めていることをしているようです。
クラスの各インスタンスに一意の ID を割り当てようとしていると仮定すると、クラスのプライベート静的変数を作成し、コンストラクター中にこの値をインクリメントしてインスタンス プロパティに割り当てることができます。
public class MyClass {
private static long INSTANCE_ID = 0;
private long ID;
//ctor
public MyClass() {
this.ID = INSTANCE_ID++;
}
//You could build your string method based on the ID if you wanted to...
public long getID() {
return ID;
}
}
編集この回答を投稿する前に、@djs のコメントが表示されませんでした。これは彼と全く同じ考えです。
インスタンスに基づいて文字列番号を探している場合は、これを試すことができます。
yourInstance.GetHashCode().ToString();
また、メソッドをオーバーライドすることで戻り値を改善できるため、GetHashCode
確実に一意の数値を返すことができます。
私のコメントによると、これを並べ替えの目的で使用している場合は、IComparable
代わりに実装してください。
public class Foo : IComparable<Foo> {
public int CompareTo(Foo other) {
return SomeCalculation.CompareTo(other.SomeCalculation());
}
private int SomeCalculation() {
// your implementation
}
}
これにより、デフォルトのソーターを使用してオブジェクトをソートしたり、オブジェクトを手動で比較したりできます。
文字列表現の意味によって異なります。オブジェクトは、さまざまな方法で文字列として表すことができます。.NET でこれを行うデフォルトの方法は、型名を返すことです。つまり、次のコードを記述した場合:
class MyClass { }
// In the main function
MyClass mc = new MyClass();
Console.WriteLine(mc.ToString());
を出力しますMyClass
。
ただし、これは通常、希望するものではありません。通常、クラスを表現する独自の方法があります。つまり、DateTime
クラス/構造体では、ToString
メソッドは日付と時刻を含む文字列を返す必要があります。
typeのカスタム文字列表現を作成するには、次のToString
メソッドをオーバーライドする必要がありますSystem.Object
。
class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
public Person(string fName, string lName) {
FirstName = fName;
LastName = lName;
}
public override void ToString() {
return FirstName + " " + LastName;
}
}
// in your main method
Person p = new Person("Albert", "Einstein");
Console.WriteLine(p.ToString());
これは出力されますAlbert Einstein
。